diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000000..e3922c3998
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,3 @@
+src/plugins/types/filterTypes.ts
+src/screens/reader/components/ReaderBottomSheet/ReaderValueChange.tsx
+# These two files cause the @typescript-eslint/no-unused-vars rule to fail
diff --git a/.eslintrc.js b/.eslintrc.js
index 57c28b56db..7c718a1374 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,7 +1,12 @@
module.exports = {
root: true,
- extends: '@react-native',
+ plugins: ['jest'],
+ extends: ['@react-native', 'plugin:jest/recommended'],
+
overrides: [
+ {
+ files: ['**/__tests__/**', '**/*.test.*', '**/*.spec.*'],
+ },
{
files: ['*.js', '*.jsx', '*.ts', '*.tsx'],
rules: {
@@ -17,6 +22,7 @@ module.exports = {
'prefer-const': 'error',
'no-dupe-else-if': 'error',
'no-duplicate-imports': 'error',
+ '@react-native/no-deep-imports': 0,
},
},
],
diff --git a/.gitignore b/.gitignore
index 424905ee74..d221b0467f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -91,4 +91,5 @@ flake.lock
.cursor/
.agents/
-.claude/
\ No newline at end of file
+.claude/
+.jj/
diff --git a/App.tsx b/App.tsx
index ecefb83c72..eb4d4a6d87 100644
--- a/App.tsx
+++ b/App.tsx
@@ -3,7 +3,7 @@ import { enableFreeze } from 'react-native-screens';
enableFreeze(true);
-import React, { useEffect } from 'react';
+import React, { Suspense, useEffect } from 'react';
import { StatusBar, StyleSheet } from 'react-native';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import LottieSplashScreen from 'react-native-lottie-splash-screen';
@@ -14,10 +14,10 @@ import * as Notifications from 'expo-notifications';
import AppErrorBoundary, {
ErrorFallback,
} from '@components/AppErrorBoundary/AppErrorBoundary';
-import { useDatabaseInitialization } from '@hooks';
import Main from './src/navigators/Main';
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
+import { useInitDatabase } from '@database/db';
Notifications.setNotificationHandler({
handleNotification: async () => {
@@ -64,14 +64,13 @@ Notifications.setNotificationChannelAsync('tts-controls', {
});
const App = () => {
- const { isDbReady, dbError, retryInitialization } =
- useDatabaseInitialization();
+ const state = useInitDatabase();
useEffect(() => {
- if (isDbReady || dbError) {
+ if (state.success || state.error) {
LottieSplashScreen.hide();
}
- }, [isDbReady, dbError]);
+ }, [state.success, state.error]);
useEffect(() => {
const subscription = Notifications.addNotificationResponseReceivedListener(
@@ -89,27 +88,25 @@ const App = () => {
};
}, []);
- if (dbError) {
- return ;
- }
-
- if (!isDbReady) {
- return null;
+ if (state.error) {
+ return null} />;
}
return (
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
);
};
diff --git a/app.json b/app.json
index 9f72f0b48d..835ede1392 100644
--- a/app.json
+++ b/app.json
@@ -6,13 +6,6 @@
"plugins": [
"expo-localization",
"react-native-edge-to-edge",
- [
- "expo-sqlite",
- {
- "enableFTS": false,
- "useSQLCipher": false
- }
- ],
"expo-web-browser"
]
}
diff --git a/babel.config.js b/babel.config.js
index c62e06c31e..bfffe2484d 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -40,6 +40,12 @@ module.exports = function (api) {
path: '.env',
},
],
+ [
+ 'inline-import',
+ {
+ extensions: ['.sql'],
+ },
+ ],
],
};
};
diff --git a/drizzle.config.ts b/drizzle.config.ts
new file mode 100644
index 0000000000..6998abbd6e
--- /dev/null
+++ b/drizzle.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'drizzle-kit';
+
+export default defineConfig({
+ dialect: 'sqlite',
+ driver: 'expo',
+ schema: './src/database/schema/index.ts',
+});
diff --git a/drizzle/20251222152612_past_mandrill/migration.sql b/drizzle/20251222152612_past_mandrill/migration.sql
new file mode 100644
index 0000000000..013703822a
--- /dev/null
+++ b/drizzle/20251222152612_past_mandrill/migration.sql
@@ -0,0 +1,63 @@
+CREATE TABLE IF NOT EXISTS `Category` (
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ `name` text NOT NULL,
+ `sort` integer
+);
+--> statement-breakpoint
+CREATE UNIQUE INDEX IF NOT EXISTS `category_name_unique` ON `Category` (`name`);--> statement-breakpoint
+CREATE INDEX IF NOT EXISTS `category_sort_idx` ON `Category` (`sort`);--> statement-breakpoint
+CREATE TABLE IF NOT EXISTS `Chapter` (
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ `novelId` integer NOT NULL,
+ `path` text NOT NULL,
+ `name` text NOT NULL,
+ `releaseTime` text,
+ `bookmark` integer DEFAULT false,
+ `unread` integer DEFAULT true,
+ `readTime` text,
+ `isDownloaded` integer DEFAULT false,
+ `updatedTime` text,
+ `chapterNumber` real,
+ `page` text DEFAULT '1',
+ `position` integer DEFAULT 0,
+ `progress` integer
+);
+--> statement-breakpoint
+CREATE UNIQUE INDEX IF NOT EXISTS `chapter_novel_path_unique` ON `Chapter` (`novelId`,`path`);--> statement-breakpoint
+CREATE INDEX IF NOT EXISTS `chapterNovelIdIndex` ON `Chapter` (`novelId`,`position`,`page`,`id`);--> statement-breakpoint
+CREATE TABLE IF NOT EXISTS `Novel` (
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ `path` text NOT NULL,
+ `pluginId` text NOT NULL,
+ `name` text NOT NULL,
+ `cover` text,
+ `summary` text,
+ `author` text,
+ `artist` text,
+ `status` text DEFAULT 'Unknown',
+ `genres` text,
+ `inLibrary` integer DEFAULT false,
+ `isLocal` integer DEFAULT false,
+ `totalPages` integer DEFAULT 0,
+ `chaptersDownloaded` integer DEFAULT 0,
+ `chaptersUnread` integer DEFAULT 0,
+ `totalChapters` integer DEFAULT 0,
+ `lastReadAt` text,
+ `lastUpdatedAt` text
+);
+--> statement-breakpoint
+CREATE UNIQUE INDEX IF NOT EXISTS `novel_path_plugin_unique` ON `Novel` (`path`,`pluginId`);--> statement-breakpoint
+CREATE INDEX IF NOT EXISTS `NovelIndex` ON `Novel` (`pluginId`,`path`,`id`,`inLibrary`);--> statement-breakpoint
+CREATE TABLE IF NOT EXISTS `NovelCategory` (
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ `novelId` integer NOT NULL,
+ `categoryId` integer NOT NULL
+);
+--> statement-breakpoint
+CREATE UNIQUE INDEX IF NOT EXISTS `novel_category_unique` ON `NovelCategory` (`novelId`,`categoryId`);--> statement-breakpoint
+CREATE TABLE IF NOT EXISTS `Repository` (
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ `url` text NOT NULL
+);
+--> statement-breakpoint
+CREATE UNIQUE INDEX IF NOT EXISTS `repository_url_unique` ON `Repository` (`url`);
diff --git a/drizzle/20251222152612_past_mandrill/snapshot.json b/drizzle/20251222152612_past_mandrill/snapshot.json
new file mode 100644
index 0000000000..c7a78cd173
--- /dev/null
+++ b/drizzle/20251222152612_past_mandrill/snapshot.json
@@ -0,0 +1,624 @@
+{
+ "dialect": "sqlite",
+ "id": "cf9a3ebf-235d-4a1d-8b65-297a5d2847e8",
+ "prevIds": [
+ "00000000-0000-0000-0000-000000000000"
+ ],
+ "version": "7",
+ "ddl": [
+ {
+ "name": "Category",
+ "entityType": "tables"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "table": "Category",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "Category_pk",
+ "table": "Category",
+ "entityType": "pks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "name",
+ "table": "Category",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "sort",
+ "table": "Category",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ {
+ "value": "name",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "category_name_unique",
+ "table": "Category",
+ "entityType": "indexes"
+ },
+ {
+ "columns": [
+ {
+ "value": "sort",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "category_sort_idx",
+ "table": "Category",
+ "entityType": "indexes"
+ },
+ {
+ "name": "Chapter",
+ "entityType": "tables"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "Chapter_pk",
+ "table": "Chapter",
+ "entityType": "pks"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "novelId",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "path",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "name",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "releaseTime",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "false",
+ "generated": null,
+ "name": "bookmark",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "true",
+ "generated": null,
+ "name": "unread",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "readTime",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "false",
+ "generated": null,
+ "name": "isDownloaded",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "updatedTime",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "real",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "chapterNumber",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "'1'",
+ "generated": null,
+ "name": "page",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "position",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "progress",
+ "table": "Chapter",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ {
+ "value": "novelId",
+ "isExpression": false
+ },
+ {
+ "value": "path",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "chapter_novel_path_unique",
+ "table": "Chapter",
+ "entityType": "indexes"
+ },
+ {
+ "columns": [
+ {
+ "value": "novelId",
+ "isExpression": false
+ },
+ {
+ "value": "position",
+ "isExpression": false
+ },
+ {
+ "value": "page",
+ "isExpression": false
+ },
+ {
+ "value": "id",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "chapterNovelIdIndex",
+ "table": "Chapter",
+ "entityType": "indexes"
+ },
+ {
+ "name": "Novel",
+ "entityType": "tables"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "Novel_pk",
+ "table": "Novel",
+ "entityType": "pks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "path",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "pluginId",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "name",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "cover",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "summary",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "author",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "artist",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "'Unknown'",
+ "generated": null,
+ "name": "status",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "genres",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "false",
+ "generated": null,
+ "name": "inLibrary",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "false",
+ "generated": null,
+ "name": "isLocal",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "totalPages",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "chaptersDownloaded",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "chaptersUnread",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": false,
+ "default": "0",
+ "generated": null,
+ "name": "totalChapters",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "lastReadAt",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "type": "text",
+ "notNull": false,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "lastUpdatedAt",
+ "table": "Novel",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ {
+ "value": "path",
+ "isExpression": false
+ },
+ {
+ "value": "pluginId",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "novel_path_plugin_unique",
+ "table": "Novel",
+ "entityType": "indexes"
+ },
+ {
+ "columns": [
+ {
+ "value": "pluginId",
+ "isExpression": false
+ },
+ {
+ "value": "path",
+ "isExpression": false
+ },
+ {
+ "value": "id",
+ "isExpression": false
+ },
+ {
+ "value": "inLibrary",
+ "isExpression": false
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "origin": "manual",
+ "name": "NovelIndex",
+ "table": "Novel",
+ "entityType": "indexes"
+ },
+ {
+ "name": "NovelCategory",
+ "entityType": "tables"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "table": "NovelCategory",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "NovelCategory_pk",
+ "table": "NovelCategory",
+ "entityType": "pks"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "novelId",
+ "table": "NovelCategory",
+ "entityType": "columns"
+ },
+ {
+ "type": "integer",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "categoryId",
+ "table": "NovelCategory",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ {
+ "value": "novelId",
+ "isExpression": false
+ },
+ {
+ "value": "categoryId",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "novel_category_unique",
+ "table": "NovelCategory",
+ "entityType": "indexes"
+ },
+ {
+ "name": "Repository",
+ "entityType": "tables"
+ },
+ {
+ "type": "integer",
+ "notNull": false,
+ "autoincrement": true,
+ "default": null,
+ "generated": null,
+ "name": "id",
+ "table": "Repository",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "Repository_pk",
+ "table": "Repository",
+ "entityType": "pks"
+ },
+ {
+ "type": "text",
+ "notNull": true,
+ "autoincrement": false,
+ "default": null,
+ "generated": null,
+ "name": "url",
+ "table": "Repository",
+ "entityType": "columns"
+ },
+ {
+ "columns": [
+ {
+ "value": "url",
+ "isExpression": false
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "origin": "manual",
+ "name": "repository_url_unique",
+ "table": "Repository",
+ "entityType": "indexes"
+ }
+ ],
+ "renames": []
+}
\ No newline at end of file
diff --git a/drizzle/migrations.js b/drizzle/migrations.js
new file mode 100644
index 0000000000..97f00c8085
--- /dev/null
+++ b/drizzle/migrations.js
@@ -0,0 +1,10 @@
+// This file is required for Expo/React Native SQLite migrations - https://orm.drizzle.team/quick-sqlite/expo
+
+import m0000 from './20251222152612_past_mandrill/migration.sql';
+
+export default {
+ journal: { entries: [] },
+ migrations: {
+ '20251222152612_past_mandrill': m0000,
+ },
+};
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 0000000000..40461025b7
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,57 @@
+module.exports = {
+ // Use node environment for database tests (no React Native needed)
+ testEnvironment: 'node',
+ roots: ['/src'],
+ testMatch: ['**/__tests__/**/*.test.ts', '**/__tests__/**/*.test.tsx'],
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
+
+ // Transform TypeScript and JavaScript files using Babel (uses babel.config.js)
+ transform: {
+ '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest',
+ },
+
+ // Transform node_modules packages that use ES modules
+ // Exclude most packages, but include ones that need transformation
+ // Note: The pattern uses negative lookahead - packages NOT matching this pattern are ignored
+ transformIgnorePatterns: [
+ 'node_modules/(?!(react-native|@react-native|@react-native-community|@react-navigation|expo|expo-.*|@expo|@op-engineering|drizzle-orm|lodash-es|@babel/runtime)/)',
+ ],
+
+ // Module name mapping for path aliases
+ moduleNameMapper: {
+ '^@components$': '/src/components/index',
+ '^@components/(.*)$': '/src/components/$1',
+ '^@database/(.*)$': '/src/database/$1',
+ '^@hooks$': '/src/hooks/index',
+ '^@hooks/(.*)$': '/src/hooks/$1',
+ '^@screens/(.*)$': '/src/screens/$1',
+ '^@strings/(.*)$': '/strings/$1',
+ '^@theme/(.*)$': '/src/theme/$1',
+ '^@utils/(.*)$': '/src/utils/$1',
+ '^@plugins/(.*)$': '/src/plugins/$1',
+ '^@services/(.*)$': '/src/services/$1',
+ '^@navigators/(.*)$': '/src/navigators/$1',
+ '^@native/(.*)$': '/src/native/$1',
+ '^@api/(.*)$': '/src/api/$1',
+ '^@type/(.*)$': '/src/type/$1',
+ '^@specs/(.*)$': '/specs/$1',
+ },
+
+ // Setup file runs after Jest environment is set up
+ setupFilesAfterEnv: ['/src/database/queries/__tests__/setup.ts'],
+
+ // Coverage configuration
+ collectCoverageFrom: [
+ 'src/database/queries/**/*.ts',
+ '!src/database/queries/**/__tests__/**',
+ ],
+ coverageDirectory: 'coverage',
+ coverageReporters: ['text', 'lcov', 'html'],
+
+ // Test configuration
+ testTimeout: 10000,
+ clearMocks: true,
+ resetMocks: true,
+ restoreMocks: true,
+ verbose: true,
+};
diff --git a/metro.config.js b/metro.config.js
index 838a5ec22c..2fd5360f47 100644
--- a/metro.config.js
+++ b/metro.config.js
@@ -24,6 +24,7 @@ const map = {
const customConfig = {
resolver: {
unstable_enableSymlinks: true,
+ sourceExts: [...defaultConfig.resolver.sourceExts, 'sql'],
},
server: {
port: 8081,
diff --git a/package.json b/package.json
index 50b0857bc4..c91ea2b763 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,12 @@
"generate:env:debug": "node scripts/generate-env-file.cjs Debug",
"generate:env:release": "node scripts/generate-env-file.cjs Release",
"generate:string-types": "node scripts/generate-string-types.cjs",
+ "generate:db-migration": "drizzle-kit generate",
+ "upgrade:migration-format": "drizzle-kit up",
+ "test": "jest",
+ "test:watch": "jest --watch",
+ "test:coverage": "jest --coverage",
+ "test:queries": "jest --testPathPattern=queries",
"lint": "eslint ./src --ext .js,.jsx,.ts,.tsx",
"lint:fix": "pnpm run lint -- --fix",
"format": "prettier --write \"./src/**/*.{js,jsx,ts,tsx}\" ./scripts",
@@ -40,92 +46,108 @@
},
"dependencies": {
"@cd-z/react-native-epub-creator": "^3.0.0",
- "@gorhom/bottom-sheet": "^5.2.6",
- "@legendapp/list": "^2.0.16",
+ "@gorhom/bottom-sheet": "^5.2.8",
+ "@legendapp/list": "^2.0.19",
"@noble/ciphers": "^2.1.1",
- "@react-native-community/slider": "^5.1.1",
+ "@op-engineering/op-sqlite": "^15.2.5",
+ "@react-native-community/slider": "^5.1.2",
"@react-native-cookies/cookies": "^6.2.1",
"@react-native-documents/picker": "^10.1.7",
- "@react-native-google-signin/google-signin": "^16.0.0",
+ "@react-native-google-signin/google-signin": "^16.1.1",
"@react-native-vector-icons/common": "^12.4.0",
"@react-native-vector-icons/material-design-icons": "^12.4.0",
- "@react-native/codegen": "^0.81.5",
- "@react-native/gradle-plugin": "^0.81.5",
- "@react-navigation/bottom-tabs": "^7.8.6",
- "@react-navigation/native": "^7.1.21",
- "@react-navigation/native-stack": "^7.8.0",
- "@react-navigation/stack": "^7.6.7",
+ "@react-native/codegen": "^0.81.6",
+ "@react-native/gradle-plugin": "^0.81.6",
+ "@react-navigation/bottom-tabs": "^7.14.0",
+ "@react-navigation/native": "^7.1.28",
+ "@react-navigation/native-stack": "^7.13.0",
+ "@react-navigation/stack": "^7.7.2",
"@shopify/flash-list": "2.0.2",
+ "babel-plugin-inline-import": "^3.0.0",
"cheerio": "1.0.0-rc.12",
"color": "^5.0.3",
"dayjs": "^1.11.19",
- "expo": "^54.0.25",
- "expo-clipboard": "~8.0.7",
- "expo-document-picker": "~14.0.7",
- "expo-file-system": "~19.0.19",
- "expo-haptics": "~15.0.7",
- "expo-keep-awake": "~15.0.7",
- "expo-linear-gradient": "~15.0.7",
- "expo-linking": "~8.0.9",
- "expo-localization": "~17.0.7",
- "expo-navigation-bar": "~5.0.9",
- "expo-notifications": "~0.32.13",
- "expo-speech": "~14.0.7",
- "expo-sqlite": "~16.0.9",
- "expo-web-browser": "~15.0.9",
- "htmlparser2": "^10.0.0",
- "i18n-js": "^4.5.1",
- "lodash-es": "^4.17.21",
+ "drizzle-orm": "1.0.0-beta.13-f728631",
+ "expo": "^54.0.33",
+ "expo-clipboard": "~8.0.8",
+ "expo-document-picker": "~14.0.8",
+ "expo-file-system": "~19.0.21",
+ "expo-haptics": "~15.0.8",
+ "expo-keep-awake": "~15.0.8",
+ "expo-linear-gradient": "~15.0.8",
+ "expo-linking": "~8.0.11",
+ "expo-localization": "~17.0.8",
+ "expo-navigation-bar": "~5.0.10",
+ "expo-notifications": "~0.32.16",
+ "expo-speech": "~14.0.8",
+ "expo-web-browser": "~15.0.10",
+ "htmlparser2": "^10.1.0",
+ "i18n-js": "^4.5.2",
+ "lodash-es": "^4.17.23",
"lottie-ios": "^3.5.0",
- "lottie-react-native": "^5.1.3",
+ "lottie-react-native": "^5.1.6",
"protobufjs": "^7.5.4",
- "react": "19.1.0",
- "react-native": "^0.81.5",
+ "react": "19.1.4",
+ "react-native": "^0.81.6",
"react-native-background-actions": "^4.0.1",
"react-native-device-info": "^14.1.1",
"react-native-draggable-flatlist": "^4.0.3",
- "react-native-drawer-layout": "^4.2.0",
+ "react-native-drawer-layout": "^4.2.2",
"react-native-edge-to-edge": "^1.7.0",
"react-native-error-boundary": "^2.0.0",
"react-native-file-access": "^3.2.0",
- "react-native-gesture-handler": "^2.29.1",
+ "react-native-gesture-handler": "^2.30.0",
"react-native-lottie-splash-screen": "^1.1.2",
"react-native-mmkv": "^3.3.3",
"react-native-pager-view": "^6.9.1",
- "react-native-paper": "^5.14.5",
- "react-native-reanimated": "^4.1.5",
+ "react-native-paper": "^5.15.0",
+ "react-native-reanimated": "^4.2.2",
"react-native-saf-x": "^2.2.3",
"react-native-safe-area-context": "^5.6.2",
- "react-native-screens": "^4.18.0",
+ "react-native-screens": "^4.23.0",
"react-native-shimmer-placeholder": "^2.0.9",
- "react-native-tab-view": "^4.2.0",
+ "react-native-tab-view": "^4.2.2",
"react-native-url-polyfill": "^2.0.0",
"react-native-webview": "13.15.0",
- "react-native-worklets": "^0.6.1",
+ "react-native-worklets": "^0.7.4",
"react-native-zip-archive": "^7.0.2",
- "sanitize-html": "^2.17.0",
+ "sanitize-html": "^2.17.1",
"urlencode": "^2.0.0"
},
"devDependencies": {
- "@babel/core": "^7.28.5",
+ "@babel/core": "^7.29.0",
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
- "@babel/preset-env": "^7.28.5",
- "@babel/runtime": "^7.28.4",
- "@react-native-community/cli": "^20.0.2",
- "@react-native-community/cli-platform-android": "^20.0.2",
- "@react-native-community/cli-platform-ios": "^20.0.2",
- "@react-native/babel-preset": "^0.81.5",
- "@react-native/eslint-config": "^0.81.5",
- "@react-native/metro-config": "^0.81.5",
- "@react-native/typescript-config": "^0.81.5",
+ "@babel/preset-env": "^7.29.0",
+ "@babel/runtime": "^7.28.6",
+ "@react-native-community/cli": "^20.1.1",
+ "@react-native-community/cli-platform-android": "^20.1.1",
+ "@react-native-community/cli-platform-ios": "^20.1.1",
+ "@react-native/babel-preset": "^0.81.6",
+ "@react-native/eslint-config": "^0.81.6",
+ "@react-native/eslint-plugin": "^0.83.2",
+ "@react-native/metro-config": "^0.81.6",
+ "@react-native/typescript-config": "^0.81.6",
+ "@types/better-sqlite3": "^7.6.13",
"@types/color": "^4.2.0",
+ "@types/jest": "^29.5.14",
"@types/lodash-es": "^4.17.12",
"@types/react": "~19.1.17",
"@types/sanitize-html": "^2.16.0",
+ "@typescript-eslint/eslint-plugin": "^8.56.0",
+ "@typescript-eslint/parser": "^8.56.0",
"babel-plugin-module-resolver": "^5.0.2",
"babel-plugin-react-compiler": "19.1.0-rc.3",
+ "better-sqlite3": "^12.6.2",
+ "drizzle-kit": "1.0.0-beta.13-f728631",
"eslint": "^8.57.1",
+ "eslint-plugin-eslint-comments": "^3.2.0",
+ "eslint-plugin-ft-flow": "^3.0.11",
+ "eslint-plugin-jest": "^29.15.0",
+ "eslint-plugin-react": "^7.37.5",
+ "eslint-plugin-react-hooks": "^7.0.1",
+ "eslint-plugin-react-native": "^5.0.0",
"husky": "^7.0.4",
+ "jest": "^29.7.0",
"lint-staged": "^12.5.0",
"prettier": "2.8.8",
"react-native-dotenv": "^3.4.11",
@@ -140,5 +162,5 @@
"engines": {
"node": ">=20"
},
- "packageManager": "pnpm@9.15.0"
+ "packageManager": "pnpm@10.27.0"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d1c4a830dc..54f94659db 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,59 +5,66 @@ settings:
excludeLinksFromLockfile: false
importers:
+
.:
dependencies:
'@cd-z/react-native-epub-creator':
specifier: ^3.0.0
- version: 3.0.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 3.0.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@gorhom/bottom-sheet':
- specifier: ^5.2.6
- version: 5.2.6(@types/react@19.1.17)(react-native-gesture-handler@2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^5.2.8
+ version: 5.2.8(@types/react@19.1.17)(react-native-gesture-handler@2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-reanimated@4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@legendapp/list':
- specifier: ^2.0.16
- version: 2.0.16(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^2.0.19
+ version: 2.0.19(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@noble/ciphers':
specifier: ^2.1.1
version: 2.1.1
+ '@op-engineering/op-sqlite':
+ specifier: ^15.2.5
+ version: 15.2.5(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@react-native-community/slider':
- specifier: ^5.1.1
- version: 5.1.1
+ specifier: ^5.1.2
+ version: 5.1.2
'@react-native-cookies/cookies':
specifier: ^6.2.1
- version: 6.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ version: 6.2.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
'@react-native-documents/picker':
specifier: ^10.1.7
- version: 10.1.7(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 10.1.7(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@react-native-google-signin/google-signin':
- specifier: ^16.0.0
- version: 16.0.0(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^16.1.1
+ version: 16.1.1(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@react-native-vector-icons/common':
specifier: ^12.4.0
- version: 12.4.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 12.4.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@react-native-vector-icons/material-design-icons':
specifier: ^12.4.0
- version: 12.4.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 12.4.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@react-native/codegen':
- specifier: ^0.81.5
- version: 0.81.5(@babel/core@7.28.5)
+ specifier: ^0.81.6
+ version: 0.81.6(@babel/core@7.29.0)
'@react-native/gradle-plugin':
- specifier: ^0.81.5
- version: 0.81.5
+ specifier: ^0.81.6
+ version: 0.81.6
'@react-navigation/bottom-tabs':
- specifier: ^7.8.6
- version: 7.8.6(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^7.14.0
+ version: 7.14.0(@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-screens@4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@react-navigation/native':
- specifier: ^7.1.21
- version: 7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^7.1.28
+ version: 7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@react-navigation/native-stack':
- specifier: ^7.8.0
- version: 7.8.0(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^7.13.0
+ version: 7.13.0(@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-screens@4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@react-navigation/stack':
- specifier: ^7.6.7
- version: 7.6.7(fvtyc5glo6n4aaddag5swr7mca)
+ specifier: ^7.7.2
+ version: 7.7.2(ab852612dcbc4f4eaa1a5a4d46e7f077)
'@shopify/flash-list':
specifier: 2.0.2
- version: 2.0.2(@babel/runtime@7.28.4)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.0.2(@babel/runtime@7.28.6)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ babel-plugin-inline-import:
+ specifier: ^3.0.0
+ version: 3.0.0
cheerio:
specifier: 1.0.0-rc.12
version: 1.0.0-rc.12
@@ -67,181 +74,190 @@ importers:
dayjs:
specifier: ^1.11.19
version: 1.11.19
+ drizzle-orm:
+ specifier: 1.0.0-beta.13-f728631
+ version: 1.0.0-beta.13-f728631(0b72bd9ef2b6872263c5ffe3abac06d7)
expo:
- specifier: ^54.0.25
- version: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^54.0.33
+ version: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
expo-clipboard:
- specifier: ~8.0.7
- version: 8.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ~8.0.8
+ version: 8.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
expo-document-picker:
- specifier: ~14.0.7
- version: 14.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))
+ specifier: ~14.0.8
+ version: 14.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))
expo-file-system:
- specifier: ~19.0.19
- version: 19.0.19(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ specifier: ~19.0.21
+ version: 19.0.21(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
expo-haptics:
- specifier: ~15.0.7
- version: 15.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))
+ specifier: ~15.0.8
+ version: 15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))
expo-keep-awake:
- specifier: ~15.0.7
- version: 15.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)
+ specifier: ~15.0.8
+ version: 15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react@19.1.4)
expo-linear-gradient:
- specifier: ~15.0.7
- version: 15.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ~15.0.8
+ version: 15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
expo-linking:
- specifier: ~8.0.9
- version: 8.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ~8.0.11
+ version: 8.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
expo-localization:
- specifier: ~17.0.7
- version: 17.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)
+ specifier: ~17.0.8
+ version: 17.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react@19.1.4)
expo-navigation-bar:
- specifier: ~5.0.9
- version: 5.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ~5.0.10
+ version: 5.0.10(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
expo-notifications:
- specifier: ~0.32.13
- version: 0.32.13(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ~0.32.16
+ version: 0.32.16(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
expo-speech:
- specifier: ~14.0.7
- version: 14.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))
- expo-sqlite:
- specifier: ~16.0.9
- version: 16.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ~14.0.8
+ version: 14.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))
expo-web-browser:
- specifier: ~15.0.9
- version: 15.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ specifier: ~15.0.10
+ version: 15.0.10(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
htmlparser2:
- specifier: ^10.0.0
- version: 10.0.0
+ specifier: ^10.1.0
+ version: 10.1.0
i18n-js:
- specifier: ^4.5.1
- version: 4.5.1
+ specifier: ^4.5.2
+ version: 4.5.2
lodash-es:
- specifier: ^4.17.21
- version: 4.17.21
+ specifier: ^4.17.23
+ version: 4.17.23
lottie-ios:
specifier: ^3.5.0
version: 3.5.0
lottie-react-native:
- specifier: ^5.1.3
- version: 5.1.6(lottie-ios@3.5.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^5.1.6
+ version: 5.1.6(lottie-ios@3.5.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
protobufjs:
specifier: ^7.5.4
version: 7.5.4
react:
- specifier: 19.1.0
- version: 19.1.0
+ specifier: 19.1.4
+ version: 19.1.4
react-native:
- specifier: ^0.81.5
- version: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ specifier: ^0.81.6
+ version: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
react-native-background-actions:
specifier: ^4.0.1
- version: 4.0.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ version: 4.0.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
react-native-device-info:
specifier: ^14.1.1
- version: 14.1.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ version: 14.1.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
react-native-draggable-flatlist:
specifier: ^4.0.3
- version: 4.0.3(@babel/core@7.28.5)(react-native-gesture-handler@2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ version: 4.0.3(@babel/core@7.29.0)(react-native-gesture-handler@2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-reanimated@4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
react-native-drawer-layout:
- specifier: ^4.2.0
- version: 4.2.0(react-native-gesture-handler@2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^4.2.2
+ version: 4.2.2(react-native-gesture-handler@2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-reanimated@4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-edge-to-edge:
specifier: ^1.7.0
- version: 1.7.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 1.7.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-error-boundary:
specifier: ^2.0.0
- version: 2.0.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.0.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-file-access:
specifier: ^3.2.0
- version: 3.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 3.2.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-gesture-handler:
- specifier: ^2.29.1
- version: 2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^2.30.0
+ version: 2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-lottie-splash-screen:
specifier: ^1.1.2
- version: 1.1.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 1.1.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-mmkv:
specifier: ^3.3.3
- version: 3.3.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 3.3.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-pager-view:
specifier: ^6.9.1
- version: 6.9.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 6.9.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-paper:
- specifier: ^5.14.5
- version: 5.14.5(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^5.15.0
+ version: 5.15.0(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-reanimated:
- specifier: ^4.1.5
- version: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^4.2.2
+ version: 4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-saf-x:
specifier: ^2.2.3
- version: 2.2.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.2.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-safe-area-context:
specifier: ^5.6.2
- version: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-screens:
- specifier: ^4.18.0
- version: 4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^4.23.0
+ version: 4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-shimmer-placeholder:
specifier: ^2.0.9
- version: 2.0.9(prop-types@15.8.1)(react-native-linear-gradient@2.8.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))
+ version: 2.0.9(prop-types@15.8.1)(react-native-linear-gradient@2.8.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))
react-native-tab-view:
- specifier: ^4.2.0
- version: 4.2.0(react-native-pager-view@6.9.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^4.2.2
+ version: 4.2.2(react-native-pager-view@6.9.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-url-polyfill:
specifier: ^2.0.0
- version: 2.0.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ version: 2.0.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
react-native-webview:
specifier: 13.15.0
- version: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-worklets:
- specifier: ^0.6.1
- version: 0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ specifier: ^0.7.4
+ version: 0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
react-native-zip-archive:
specifier: ^7.0.2
- version: 7.0.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 7.0.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
sanitize-html:
- specifier: ^2.17.0
- version: 2.17.0
+ specifier: ^2.17.1
+ version: 2.17.1
urlencode:
specifier: ^2.0.0
version: 2.0.0
devDependencies:
'@babel/core':
- specifier: ^7.28.5
- version: 7.28.5
+ specifier: ^7.29.0
+ version: 7.29.0
'@babel/plugin-transform-export-namespace-from':
specifier: ^7.27.1
- version: 7.27.1(@babel/core@7.28.5)
+ version: 7.27.1(@babel/core@7.29.0)
'@babel/preset-env':
- specifier: ^7.28.5
- version: 7.28.5(@babel/core@7.28.5)
+ specifier: ^7.29.0
+ version: 7.29.0(@babel/core@7.29.0)
'@babel/runtime':
- specifier: ^7.28.4
- version: 7.28.4
+ specifier: ^7.28.6
+ version: 7.28.6
'@react-native-community/cli':
- specifier: ^20.0.2
- version: 20.0.2(typescript@5.9.3)
+ specifier: ^20.1.1
+ version: 20.1.1(typescript@5.9.3)
'@react-native-community/cli-platform-android':
- specifier: ^20.0.2
- version: 20.0.2
+ specifier: ^20.1.1
+ version: 20.1.1
'@react-native-community/cli-platform-ios':
- specifier: ^20.0.2
- version: 20.0.2
+ specifier: ^20.1.1
+ version: 20.1.1
'@react-native/babel-preset':
- specifier: ^0.81.5
- version: 0.81.5(@babel/core@7.28.5)
+ specifier: ^0.81.6
+ version: 0.81.6(@babel/core@7.29.0)
'@react-native/eslint-config':
- specifier: ^0.81.5
- version: 0.81.5(eslint@8.57.1)(prettier@2.8.8)(typescript@5.9.3)
+ specifier: ^0.81.6
+ version: 0.81.6(eslint@8.57.1)(jest@29.7.0(@types/node@25.2.3))(prettier@2.8.8)(typescript@5.9.3)
+ '@react-native/eslint-plugin':
+ specifier: ^0.83.2
+ version: 0.83.2
'@react-native/metro-config':
- specifier: ^0.81.5
- version: 0.81.5(@babel/core@7.28.5)
+ specifier: ^0.81.6
+ version: 0.81.6(@babel/core@7.29.0)
'@react-native/typescript-config':
- specifier: ^0.81.5
- version: 0.81.5
+ specifier: ^0.81.6
+ version: 0.81.6
+ '@types/better-sqlite3':
+ specifier: ^7.6.13
+ version: 7.6.13
'@types/color':
specifier: ^4.2.0
version: 4.2.0
+ '@types/jest':
+ specifier: ^29.5.14
+ version: 29.5.14
'@types/lodash-es':
specifier: ^4.17.12
version: 4.17.12
@@ -251,18 +267,51 @@ importers:
'@types/sanitize-html':
specifier: ^2.16.0
version: 2.16.0
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^8.56.0
+ version: 8.56.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/parser':
+ specifier: ^8.56.0
+ version: 8.56.0(eslint@8.57.1)(typescript@5.9.3)
babel-plugin-module-resolver:
specifier: ^5.0.2
version: 5.0.2
babel-plugin-react-compiler:
specifier: 19.1.0-rc.3
version: 19.1.0-rc.3
+ better-sqlite3:
+ specifier: ^12.6.2
+ version: 12.6.2
+ drizzle-kit:
+ specifier: 1.0.0-beta.13-f728631
+ version: 1.0.0-beta.13-f728631
eslint:
specifier: ^8.57.1
version: 8.57.1
+ eslint-plugin-eslint-comments:
+ specifier: ^3.2.0
+ version: 3.2.0(eslint@8.57.1)
+ eslint-plugin-ft-flow:
+ specifier: ^3.0.11
+ version: 3.0.11(eslint@8.57.1)(hermes-eslint@0.33.3)
+ eslint-plugin-jest:
+ specifier: ^29.15.0
+ version: 29.15.0(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@25.2.3))(typescript@5.9.3)
+ eslint-plugin-react:
+ specifier: ^7.37.5
+ version: 7.37.5(eslint@8.57.1)
+ eslint-plugin-react-hooks:
+ specifier: ^7.0.1
+ version: 7.0.1(eslint@8.57.1)
+ eslint-plugin-react-native:
+ specifier: ^5.0.0
+ version: 5.0.0(eslint@8.57.1)
husky:
specifier: ^7.0.4
version: 7.0.4
+ jest:
+ specifier: ^29.7.0
+ version: 29.7.0(@types/node@25.2.3)
lint-staged:
specifier: ^12.5.0
version: 12.5.0
@@ -271,1161 +320,1017 @@ importers:
version: 2.8.8
react-native-dotenv:
specifier: ^3.4.11
- version: 3.4.11(@babel/runtime@7.28.4)
+ version: 3.4.11(@babel/runtime@7.28.6)
typescript:
specifier: ~5.9.3
version: 5.9.3
packages:
+
'@0no-co/graphql.web@1.2.0':
- resolution:
- {
- integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==,
- }
+ resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==}
peerDependencies:
graphql: ^14.0.0 || ^15.0.0 || ^16.0.0
peerDependenciesMeta:
graphql:
optional: true
+ '@azure-rest/core-client@2.5.1':
+ resolution: {integrity: sha512-EHaOXW0RYDKS5CFffnixdyRPak5ytiCtU7uXDcP/uiY+A6jFRwNGzzJBiznkCzvi5EYpY+YWinieqHb0oY916A==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/abort-controller@2.1.2':
+ resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-auth@1.10.1':
+ resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/core-client@1.10.1':
+ resolution: {integrity: sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/core-http-compat@2.3.2':
+ resolution: {integrity: sha512-Tf6ltdKzOJEgxZeWLCjMxrxbodB/ZeCbzzA1A2qHbhzAjzjHoBVSUeSl/baT/oHAxhc4qdqVaDKnc2+iE932gw==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ '@azure/core-client': ^1.10.0
+ '@azure/core-rest-pipeline': ^1.22.0
+
+ '@azure/core-lro@2.7.2':
+ resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-paging@1.6.2':
+ resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-rest-pipeline@1.22.2':
+ resolution: {integrity: sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/core-tracing@1.3.1':
+ resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/core-util@1.13.1':
+ resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/identity@4.13.0':
+ resolution: {integrity: sha512-uWC0fssc+hs1TGGVkkghiaFkkS7NkTxfnCH+Hdg+yTehTpMcehpok4PgUKKdyCH+9ldu6FhiHRv84Ntqj1vVcw==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/keyvault-common@2.0.0':
+ resolution: {integrity: sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/keyvault-keys@4.10.0':
+ resolution: {integrity: sha512-eDT7iXoBTRZ2n3fLiftuGJFD+yjkiB1GNqzU2KbY1TLYeXeSPVTVgn2eJ5vmRTZ11978jy2Kg2wI7xa9Tyr8ag==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/logger@1.3.0':
+ resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/msal-browser@4.28.2':
+ resolution: {integrity: sha512-6vYUMvs6kJxJgxaCmHn/F8VxjLHNh7i9wzfwPGf8kyBJ8Gg2yvBXx175Uev8LdrD1F5C4o7qHa2CC4IrhGE1XQ==}
+ engines: {node: '>=0.8.0'}
+
+ '@azure/msal-common@15.14.2':
+ resolution: {integrity: sha512-n8RBJEUmd5QotoqbZfd+eGBkzuFI1KX6jw2b3WcpSyGjwmzoeI/Jb99opIBPHpb8y312NB+B6+FGi2ZVSR8yfA==}
+ engines: {node: '>=0.8.0'}
+
+ '@azure/msal-node@3.8.7':
+ resolution: {integrity: sha512-a+Xnrae+uwLnlw68bplS1X4kuJ9F/7K6afuMFyRkNIskhjgDezl5Fhrx+1pmAlDmC0VaaAxjRQMp1OmcqVwkIg==}
+ engines: {node: '>=16'}
+
'@babel/code-frame@7.10.4':
- resolution:
- {
- integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==,
- }
-
- '@babel/code-frame@7.27.1':
- resolution:
- {
- integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/compat-data@7.28.5':
- resolution:
- {
- integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/core@7.28.5':
- resolution:
- {
- integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/eslint-parser@7.28.5':
- resolution:
- {
- integrity: sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==,
- }
- engines: { node: ^10.13.0 || ^12.13.0 || >=14.0.0 }
+ resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==}
+
+ '@babel/code-frame@7.29.0':
+ resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.29.0':
+ resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.29.0':
+ resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/eslint-parser@7.28.6':
+ resolution: {integrity: sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
peerDependencies:
'@babel/core': ^7.11.0
eslint: ^7.5.0 || ^8.0.0 || ^9.0.0
- '@babel/generator@7.28.5':
- resolution:
- {
- integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/generator@7.29.1':
+ resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-annotate-as-pure@7.27.3':
- resolution:
- {
- integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/helper-compilation-targets@7.27.2':
- resolution:
- {
- integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/helper-create-class-features-plugin@7.28.5':
- resolution:
- {
- integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.28.6':
+ resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-create-class-features-plugin@7.28.6':
+ resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-create-regexp-features-plugin@7.28.5':
- resolution:
- {
- integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
- '@babel/helper-define-polyfill-provider@0.6.5':
- resolution:
- {
- integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==,
- }
+ '@babel/helper-define-polyfill-provider@0.6.6':
+ resolution: {integrity: sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
'@babel/helper-globals@7.28.0':
- resolution:
- {
- integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-member-expression-to-functions@7.28.5':
- resolution:
- {
- integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/helper-module-imports@7.27.1':
- resolution:
- {
- integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/helper-module-transforms@7.28.3':
- resolution:
- {
- integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.28.6':
+ resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.28.6':
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-optimise-call-expression@7.27.1':
- resolution:
- {
- integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/helper-plugin-utils@7.27.1':
- resolution:
- {
- integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.28.6':
+ resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-remap-async-to-generator@7.27.1':
- resolution:
- {
- integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
- '@babel/helper-replace-supers@7.27.1':
- resolution:
- {
- integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/helper-replace-supers@7.28.6':
+ resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
- resolution:
- {
- integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.27.1':
- resolution:
- {
- integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.28.5':
- resolution:
- {
- integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
'@babel/helper-validator-option@7.27.1':
- resolution:
- {
- integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/helper-wrap-function@7.28.3':
- resolution:
- {
- integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/helpers@7.28.4':
- resolution:
- {
- integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-wrap-function@7.28.6':
+ resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.28.6':
+ resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==}
+ engines: {node: '>=6.9.0'}
'@babel/highlight@7.25.9':
- resolution:
- {
- integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/parser@7.28.5':
- resolution:
- {
- integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==,
- }
- engines: { node: '>=6.0.0' }
+ resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.29.0':
+ resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==}
+ engines: {node: '>=6.0.0'}
hasBin: true
'@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5':
- resolution:
- {
- integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1':
- resolution:
- {
- integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1':
- resolution:
- {
- integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1':
- resolution:
- {
- integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.13.0
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3':
- resolution:
- {
- integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6':
+ resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
- '@babel/plugin-proposal-decorators@7.28.0':
- resolution:
- {
- integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-proposal-decorators@7.29.0':
+ resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-proposal-export-default-from@7.27.1':
- resolution:
- {
- integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2':
- resolution:
- {
- integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-async-generators@7.8.4':
- resolution:
- {
- integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==,
- }
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-bigint@7.8.3':
- resolution:
- {
- integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==,
- }
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-class-properties@7.12.13':
- resolution:
- {
- integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==,
- }
+ resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-class-static-block@7.14.5':
- resolution:
- {
- integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-decorators@7.27.1':
- resolution:
- {
- integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-syntax-decorators@7.28.6':
+ resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-dynamic-import@7.8.3':
- resolution:
- {
- integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==,
- }
+ resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-export-default-from@7.27.1':
- resolution:
- {
- integrity: sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-syntax-export-default-from@7.28.6':
+ resolution: {integrity: sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-flow@7.27.1':
- resolution:
- {
- integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-syntax-flow@7.28.6':
+ resolution: {integrity: sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-import-assertions@7.27.1':
- resolution:
- {
- integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-syntax-import-assertions@7.28.6':
+ resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-import-attributes@7.27.1':
- resolution:
- {
- integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-syntax-import-attributes@7.28.6':
+ resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-import-meta@7.10.4':
- resolution:
- {
- integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==,
- }
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-json-strings@7.8.3':
- resolution:
- {
- integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==,
- }
+ resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-jsx@7.27.1':
- resolution:
- {
- integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-syntax-jsx@7.28.6':
+ resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-logical-assignment-operators@7.10.4':
- resolution:
- {
- integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==,
- }
+ resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3':
- resolution:
- {
- integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==,
- }
+ resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-numeric-separator@7.10.4':
- resolution:
- {
- integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==,
- }
+ resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-object-rest-spread@7.8.3':
- resolution:
- {
- integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==,
- }
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-optional-catch-binding@7.8.3':
- resolution:
- {
- integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==,
- }
+ resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-optional-chaining@7.8.3':
- resolution:
- {
- integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==,
- }
+ resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-private-property-in-object@7.14.5':
- resolution:
- {
- integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-top-level-await@7.14.5':
- resolution:
- {
- integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-typescript@7.27.1':
- resolution:
- {
- integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-syntax-typescript@7.28.6':
+ resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-unicode-sets-regex@7.18.6':
- resolution:
- {
- integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/plugin-transform-arrow-functions@7.27.1':
- resolution:
- {
- integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-async-generator-functions@7.28.0':
- resolution:
- {
- integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-async-generator-functions@7.29.0':
+ resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-async-to-generator@7.27.1':
- resolution:
- {
- integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-async-to-generator@7.28.6':
+ resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-block-scoped-functions@7.27.1':
- resolution:
- {
- integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-block-scoping@7.28.5':
- resolution:
- {
- integrity: sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-block-scoping@7.28.6':
+ resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-class-properties@7.27.1':
- resolution:
- {
- integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-class-properties@7.28.6':
+ resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-class-static-block@7.28.3':
- resolution:
- {
- integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-class-static-block@7.28.6':
+ resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.12.0
'@babel/plugin-transform-classes@7.28.4':
- resolution:
- {
- integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-classes@7.28.6':
+ resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-computed-properties@7.27.1':
- resolution:
- {
- integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-computed-properties@7.28.6':
+ resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-destructuring@7.28.5':
- resolution:
- {
- integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-dotall-regex@7.27.1':
- resolution:
- {
- integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-dotall-regex@7.28.6':
+ resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-duplicate-keys@7.27.1':
- resolution:
- {
- integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1':
- resolution:
- {
- integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0':
+ resolution: {integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/plugin-transform-dynamic-import@7.27.1':
- resolution:
- {
- integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-explicit-resource-management@7.28.0':
- resolution:
- {
- integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-explicit-resource-management@7.28.6':
+ resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-exponentiation-operator@7.28.5':
- resolution:
- {
- integrity: sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-exponentiation-operator@7.28.6':
+ resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-export-namespace-from@7.27.1':
- resolution:
- {
- integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-flow-strip-types@7.27.1':
- resolution:
- {
- integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-for-of@7.27.1':
- resolution:
- {
- integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-function-name@7.27.1':
- resolution:
- {
- integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-json-strings@7.27.1':
- resolution:
- {
- integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-json-strings@7.28.6':
+ resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-literals@7.27.1':
- resolution:
- {
- integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-logical-assignment-operators@7.28.5':
- resolution:
- {
- integrity: sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-logical-assignment-operators@7.28.6':
+ resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-member-expression-literals@7.27.1':
- resolution:
- {
- integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-modules-amd@7.27.1':
- resolution:
- {
- integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-modules-commonjs@7.27.1':
- resolution:
- {
- integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-modules-commonjs@7.28.6':
+ resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-modules-systemjs@7.28.5':
- resolution:
- {
- integrity: sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-modules-systemjs@7.29.0':
+ resolution: {integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-modules-umd@7.27.1':
- resolution:
- {
- integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-named-capturing-groups-regex@7.27.1':
- resolution:
- {
- integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-named-capturing-groups-regex@7.29.0':
+ resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/plugin-transform-new-target@7.27.1':
- resolution:
- {
- integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-nullish-coalescing-operator@7.27.1':
- resolution:
- {
- integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-nullish-coalescing-operator@7.28.6':
+ resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-numeric-separator@7.27.1':
- resolution:
- {
- integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-numeric-separator@7.28.6':
+ resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-object-rest-spread@7.28.4':
- resolution:
- {
- integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-object-rest-spread@7.28.6':
+ resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-object-super@7.27.1':
- resolution:
- {
- integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-optional-catch-binding@7.27.1':
- resolution:
- {
- integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-optional-catch-binding@7.28.6':
+ resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-optional-chaining@7.28.5':
- resolution:
- {
- integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-optional-chaining@7.27.1':
+ resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-optional-chaining@7.28.6':
+ resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-parameters@7.27.7':
- resolution:
- {
- integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-private-methods@7.27.1':
- resolution:
- {
- integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-private-methods@7.28.6':
+ resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-private-property-in-object@7.27.1':
- resolution:
- {
- integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-private-property-in-object@7.28.6':
+ resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-property-literals@7.27.1':
- resolution:
- {
- integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-react-display-name@7.28.0':
- resolution:
- {
- integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-react-jsx-development@7.27.1':
- resolution:
- {
- integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-react-jsx-self@7.27.1':
- resolution:
- {
- integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-react-jsx-source@7.27.1':
- resolution:
- {
- integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-react-jsx@7.27.1':
- resolution:
- {
- integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-react-jsx@7.28.6':
+ resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-react-pure-annotations@7.27.1':
- resolution:
- {
- integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-regenerator@7.28.4':
- resolution:
- {
- integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-regenerator@7.29.0':
+ resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-regexp-modifiers@7.27.1':
- resolution:
- {
- integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-regexp-modifiers@7.28.6':
+ resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/plugin-transform-reserved-words@7.27.1':
- resolution:
- {
- integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-runtime@7.28.5':
- resolution:
- {
- integrity: sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-runtime@7.29.0':
+ resolution: {integrity: sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-shorthand-properties@7.27.1':
- resolution:
- {
- integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-spread@7.27.1':
- resolution:
- {
- integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-spread@7.28.6':
+ resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-sticky-regex@7.27.1':
- resolution:
- {
- integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-template-literals@7.27.1':
- resolution:
- {
- integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-typeof-symbol@7.27.1':
- resolution:
- {
- integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-typescript@7.28.5':
- resolution:
- {
- integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-typescript@7.28.6':
+ resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-unicode-escapes@7.27.1':
- resolution:
- {
- integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-unicode-property-regex@7.27.1':
- resolution:
- {
- integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-unicode-property-regex@7.28.6':
+ resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-unicode-regex@7.27.1':
- resolution:
- {
- integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-unicode-sets-regex@7.27.1':
- resolution:
- {
- integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/plugin-transform-unicode-sets-regex@7.28.6':
+ resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
- '@babel/preset-env@7.28.5':
- resolution:
- {
- integrity: sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/preset-env@7.29.0':
+ resolution: {integrity: sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/preset-modules@0.1.6-no-external-plugins':
- resolution:
- {
- integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==,
- }
+ 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
'@babel/preset-react@7.28.5':
- resolution:
- {
- integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/preset-typescript@7.27.1':
+ resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/preset-typescript@7.28.5':
- resolution:
- {
- integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/runtime@7.28.4':
- resolution:
- {
- integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/template@7.27.2':
- resolution:
- {
- integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/traverse@7.28.5':
- resolution:
- {
- integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==,
- }
- engines: { node: '>=6.9.0' }
-
- '@babel/types@7.28.5':
- resolution:
- {
- integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==,
- }
- engines: { node: '>=6.9.0' }
+ '@babel/runtime@7.28.6':
+ resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.28.6':
+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.29.0':
+ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.29.0':
+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
+ engines: {node: '>=6.9.0'}
+
+ '@bcoe/v8-coverage@0.2.3':
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
'@callstack/react-theme-provider@3.0.9':
- resolution:
- {
- integrity: sha512-tTQ0uDSCL0ypeMa8T/E9wAZRGKWj8kXP7+6RYgPTfOPs9N07C9xM8P02GJ3feETap4Ux5S69D9nteq9mEj86NA==,
- }
+ resolution: {integrity: sha512-tTQ0uDSCL0ypeMa8T/E9wAZRGKWj8kXP7+6RYgPTfOPs9N07C9xM8P02GJ3feETap4Ux5S69D9nteq9mEj86NA==}
peerDependencies:
react: '>=16.3.0'
'@cd-z/epub-constructor@3.0.3':
- resolution:
- {
- integrity: sha512-0Q4DBZ+H6kOihAfREu1dcfwkuwIoOtpXK24im24STP89aIb1HoAhGd3MKLKsZK3tIPVsdfjI2esPnYpmhVXxrw==,
- }
+ resolution: {integrity: sha512-0Q4DBZ+H6kOihAfREu1dcfwkuwIoOtpXK24im24STP89aIb1HoAhGd3MKLKsZK3tIPVsdfjI2esPnYpmhVXxrw==}
'@cd-z/react-native-epub-creator@3.0.0':
- resolution:
- {
- integrity: sha512-vpI3viNxkSJWuSCuotFKfe1Ulg7Z+VPBTSt4GkGSGwHwpZxkNnh/UOZqyHBTtn3yvjaq2PK3GABDZlxlDhiQvA==,
- }
+ resolution: {integrity: sha512-vpI3viNxkSJWuSCuotFKfe1Ulg7Z+VPBTSt4GkGSGwHwpZxkNnh/UOZqyHBTtn3yvjaq2PK3GABDZlxlDhiQvA==}
peerDependencies:
react: '*'
react-native: '*'
+ '@drizzle-team/brocli@0.11.0':
+ resolution: {integrity: sha512-hD3pekGiPg0WPCCGAZmusBBJsDqGUR66Y452YgQsZOnkdQ7ViEPKuyP4huUGEZQefp8g34RRodXYmJ2TbCH+tg==}
+
'@egjs/hammerjs@2.0.17':
- resolution:
- {
- integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==,
- }
- engines: { node: '>=0.8.0' }
-
- '@eslint-community/eslint-utils@4.9.0':
- resolution:
- {
- integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==}
+ engines: {node: '>=0.8.0'}
+
+ '@esbuild/aix-ppc64@0.25.12':
+ resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.25.12':
+ resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.25.12':
+ resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.25.12':
+ resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.25.12':
+ resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.25.12':
+ resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.25.12':
+ resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.25.12':
+ resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.25.12':
+ resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.25.12':
+ resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.25.12':
+ resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.25.12':
+ resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.25.12':
+ resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.25.12':
+ resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.25.12':
+ resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.25.12':
+ resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.25.12':
+ resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-arm64@0.25.12':
+ resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.25.12':
+ resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.25.12':
+ resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.25.12':
+ resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.25.12':
+ resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/sunos-x64@0.25.12':
+ resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.25.12':
+ resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.25.12':
+ resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.25.12':
+ resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@eslint-community/eslint-utils@4.9.1':
+ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
'@eslint-community/regexpp@4.12.2':
- resolution:
- {
- integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==,
- }
- engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
+ resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
'@eslint/eslintrc@2.1.4':
- resolution:
- {
- integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@eslint/js@8.57.1':
- resolution:
- {
- integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
-
- '@expo/cli@54.0.16':
- resolution:
- {
- integrity: sha512-hY/OdRaJMs5WsVPuVSZ+RLH3VObJmL/pv5CGCHEZHN2PxZjSZSdctyKV8UcFBXTF0yIKNAJ9XLs1dlNYXHh4Cw==,
- }
+ resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@expo/cli@54.0.23':
+ resolution: {integrity: sha512-km0h72SFfQCmVycH/JtPFTVy69w6Lx1cHNDmfLfQqgKFYeeHTjx7LVDP4POHCtNxFP2UeRazrygJhlh4zz498g==}
hasBin: true
peerDependencies:
expo: '*'
@@ -1437,41 +1342,23 @@ packages:
react-native:
optional: true
- '@expo/code-signing-certificates@0.0.5':
- resolution:
- {
- integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==,
- }
-
- '@expo/config-plugins@54.0.2':
- resolution:
- {
- integrity: sha512-jD4qxFcURQUVsUFGMcbo63a/AnviK8WUGard+yrdQE3ZrB/aurn68SlApjirQQLEizhjI5Ar2ufqflOBlNpyPg==,
- }
-
- '@expo/config-types@54.0.8':
- resolution:
- {
- integrity: sha512-lyIn/x/Yz0SgHL7IGWtgTLg6TJWC9vL7489++0hzCHZ4iGjVcfZmPTUfiragZ3HycFFj899qN0jlhl49IHa94A==,
- }
-
- '@expo/config@12.0.10':
- resolution:
- {
- integrity: sha512-lJMof5Nqakq1DxGYlghYB/ogSBjmv4Fxn1ovyDmcjlRsQdFCXgu06gEUogkhPtc9wBt9WlTTfqENln5HHyLW6w==,
- }
-
- '@expo/devcert@1.2.0':
- resolution:
- {
- integrity: sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==,
- }
-
- '@expo/devtools@0.1.7':
- resolution:
- {
- integrity: sha512-dfIa9qMyXN+0RfU6SN4rKeXZyzKWsnz6xBSDccjL4IRiE+fQ0t84zg0yxgN4t/WK2JU5v6v4fby7W7Crv9gJvA==,
- }
+ '@expo/code-signing-certificates@0.0.6':
+ resolution: {integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==}
+
+ '@expo/config-plugins@54.0.4':
+ resolution: {integrity: sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==}
+
+ '@expo/config-types@54.0.10':
+ resolution: {integrity: sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==}
+
+ '@expo/config@12.0.13':
+ resolution: {integrity: sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==}
+
+ '@expo/devcert@1.2.1':
+ resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==}
+
+ '@expo/devtools@0.1.8':
+ resolution: {integrity: sha512-SVLxbuanDjJPgc0sy3EfXUMLb/tXzp6XIHkhtPVmTWJAp+FOr6+5SeiCfJrCzZFet0Ifyke2vX3sFcKwEvCXwQ==}
peerDependencies:
react: '*'
react-native: '*'
@@ -1481,139 +1368,74 @@ packages:
react-native:
optional: true
- '@expo/env@2.0.7':
- resolution:
- {
- integrity: sha512-BNETbLEohk3HQ2LxwwezpG8pq+h7Fs7/vAMP3eAtFT1BCpprLYoBBFZH7gW4aqGfqOcVP4Lc91j014verrYNGg==,
- }
-
- '@expo/fingerprint@0.15.3':
- resolution:
- {
- integrity: sha512-8YPJpEYlmV171fi+t+cSLMX1nC5ngY9j2FiN70dHldLpd6Ct6ouGhk96svJ4BQZwsqwII2pokwzrDAwqo4Z0FQ==,
- }
+ '@expo/env@2.0.8':
+ resolution: {integrity: sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==}
+
+ '@expo/fingerprint@0.15.4':
+ resolution: {integrity: sha512-eYlxcrGdR2/j2M6pEDXo9zU9KXXF1vhP+V+Tl+lyY+bU8lnzrN6c637mz6Ye3em2ANy8hhUR03Raf8VsT9Ogng==}
hasBin: true
- '@expo/image-utils@0.8.7':
- resolution:
- {
- integrity: sha512-SXOww4Wq3RVXLyOaXiCCuQFguCDh8mmaHBv54h/R29wGl4jRY8GEyQEx8SypV/iHt1FbzsU/X3Qbcd9afm2W2w==,
- }
-
- '@expo/json-file@10.0.7':
- resolution:
- {
- integrity: sha512-z2OTC0XNO6riZu98EjdNHC05l51ySeTto6GP7oSQrCvQgG9ARBwD1YvMQaVZ9wU7p/4LzSf1O7tckL3B45fPpw==,
- }
-
- '@expo/mcp-tunnel@0.1.0':
- resolution:
- {
- integrity: sha512-rJ6hl0GnIZj9+ssaJvFsC7fwyrmndcGz+RGFzu+0gnlm78X01957yjtHgjcmnQAgL5hWEOR6pkT0ijY5nU5AWw==,
- }
- peerDependencies:
- '@modelcontextprotocol/sdk': ^1.13.2
- peerDependenciesMeta:
- '@modelcontextprotocol/sdk':
- optional: true
+ '@expo/image-utils@0.8.8':
+ resolution: {integrity: sha512-HHHaG4J4nKjTtVa1GG9PCh763xlETScfEyNxxOvfTRr8IKPJckjTyqSLEtdJoFNJ1vqiABEjW7tqGhqGibZLeA==}
- '@expo/metro-config@54.0.9':
- resolution:
- {
- integrity: sha512-CRI4WgFXrQ2Owyr8q0liEBJveUIF9DcYAKadMRsJV7NxGNBdrIIKzKvqreDfsGiRqivbLsw6UoNb3UE7/SvPfg==,
- }
+ '@expo/json-file@10.0.8':
+ resolution: {integrity: sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==}
+
+ '@expo/metro-config@54.0.14':
+ resolution: {integrity: sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==}
peerDependencies:
expo: '*'
peerDependenciesMeta:
expo:
optional: true
- '@expo/metro@54.1.0':
- resolution:
- {
- integrity: sha512-MgdeRNT/LH0v1wcO0TZp9Qn8zEF0X2ACI0wliPtv5kXVbXWI+yK9GyrstwLAiTXlULKVIg3HVSCCvmLu0M3tnw==,
- }
-
- '@expo/osascript@2.3.7':
- resolution:
- {
- integrity: sha512-IClSOXxR0YUFxIriUJVqyYki7lLMIHrrzOaP01yxAL1G8pj2DWV5eW1y5jSzIcIfSCNhtGsshGd1tU/AYup5iQ==,
- }
- engines: { node: '>=12' }
-
- '@expo/package-manager@1.9.8':
- resolution:
- {
- integrity: sha512-4/I6OWquKXYnzo38pkISHCOCOXxfeEmu4uDoERq1Ei/9Ur/s9y3kLbAamEkitUkDC7gHk1INxRWEfFNzGbmOrA==,
- }
-
- '@expo/plist@0.4.7':
- resolution:
- {
- integrity: sha512-dGxqHPvCZKeRKDU1sJZMmuyVtcASuSYh1LPFVaM1DuffqPL36n6FMEL0iUqq2Tx3xhWk8wCnWl34IKplUjJDdA==,
- }
-
- '@expo/prebuild-config@54.0.6':
- resolution:
- {
- integrity: sha512-xowuMmyPNy+WTNq+YX0m0EFO/Knc68swjThk4dKivgZa8zI1UjvFXOBIOp8RX4ljCXLzwxQJM5oBBTvyn+59ZA==,
- }
+ '@expo/metro@54.2.0':
+ resolution: {integrity: sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==}
+
+ '@expo/osascript@2.3.8':
+ resolution: {integrity: sha512-/TuOZvSG7Nn0I8c+FcEaoHeBO07yu6vwDgk7rZVvAXoeAK5rkA09jRyjYsZo+0tMEFaToBeywA6pj50Mb3ny9w==}
+ engines: {node: '>=12'}
+
+ '@expo/package-manager@1.9.10':
+ resolution: {integrity: sha512-axJm+NOj3jVxep49va/+L3KkF3YW/dkV+RwzqUJedZrv4LeTqOG4rhrCaCPXHTvLqCTDKu6j0Xyd28N7mnxsGA==}
+
+ '@expo/plist@0.4.8':
+ resolution: {integrity: sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==}
+
+ '@expo/prebuild-config@54.0.8':
+ resolution: {integrity: sha512-EA7N4dloty2t5Rde+HP0IEE+nkAQiu4A/+QGZGT9mFnZ5KKjPPkqSyYcRvP5bhQE10D+tvz6X0ngZpulbMdbsg==}
peerDependencies:
expo: '*'
- '@expo/schema-utils@0.1.7':
- resolution:
- {
- integrity: sha512-jWHoSuwRb5ZczjahrychMJ3GWZu54jK9ulNdh1d4OzAEq672K9E5yOlnlBsfIHWHGzUAT+0CL7Yt1INiXTz68g==,
- }
+ '@expo/schema-utils@0.1.8':
+ resolution: {integrity: sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==}
'@expo/sdk-runtime-versions@1.0.0':
- resolution:
- {
- integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==,
- }
+ resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==}
'@expo/spawn-async@1.7.2':
- resolution:
- {
- integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==}
+ engines: {node: '>=12'}
'@expo/sudo-prompt@9.3.2':
- resolution:
- {
- integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==,
- }
+ resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==}
'@expo/vector-icons@15.0.3':
- resolution:
- {
- integrity: sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==,
- }
+ resolution: {integrity: sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==}
peerDependencies:
expo-font: '>=14.0.4'
react: '*'
react-native: '*'
'@expo/ws-tunnel@1.0.6':
- resolution:
- {
- integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==,
- }
-
- '@expo/xcpretty@4.3.2':
- resolution:
- {
- integrity: sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==,
- }
+ resolution: {integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==}
+
+ '@expo/xcpretty@4.4.0':
+ resolution: {integrity: sha512-o2qDlTqJ606h4xR36H2zWTywmZ3v3842K6TU8Ik2n1mfW0S580VHlt3eItVYdLYz+klaPp7CXqanja8eASZjRw==}
hasBin: true
- '@gorhom/bottom-sheet@5.2.6':
- resolution:
- {
- integrity: sha512-vmruJxdiUGDg+ZYcDmS30XDhq/h/+QkINOI5LY/uGjx8cPGwgJW0H6AB902gNTKtccbiKe/rr94EwdmIEz+LAQ==,
- }
+ '@gorhom/bottom-sheet@5.2.8':
+ resolution: {integrity: sha512-+N27SMpbBxXZQ/IA2nlEV6RGxL/qSFHKfdFKcygvW+HqPG5jVNb1OqehLQsGfBP+Up42i0gW5ppI+DhpB7UCzA==}
peerDependencies:
'@types/react': '*'
'@types/react-native': '*'
@@ -1628,380 +1450,261 @@ packages:
optional: true
'@gorhom/portal@1.0.14':
- resolution:
- {
- integrity: sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==,
- }
+ resolution: {integrity: sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==}
peerDependencies:
react: '*'
react-native: '*'
'@hapi/hoek@9.3.0':
- resolution:
- {
- integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==,
- }
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
'@hapi/topo@5.1.0':
- resolution:
- {
- integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==,
- }
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
'@humanwhocodes/config-array@0.13.0':
- resolution:
- {
- integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==,
- }
- engines: { node: '>=10.10.0' }
+ resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
+ engines: {node: '>=10.10.0'}
deprecated: Use @eslint/config-array instead
'@humanwhocodes/module-importer@1.0.1':
- resolution:
- {
- integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==,
- }
- engines: { node: '>=12.22' }
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
'@humanwhocodes/object-schema@2.0.3':
- resolution:
- {
- integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==,
- }
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
'@ide/backoff@1.0.0':
- resolution:
- {
- integrity: sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g==,
- }
-
- '@isaacs/cliui@8.0.2':
- resolution:
- {
- integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g==}
'@isaacs/fs-minipass@4.0.1':
- resolution:
- {
- integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==,
- }
- engines: { node: '>=18.0.0' }
+ resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
+ engines: {node: '>=18.0.0'}
'@isaacs/ttlcache@1.4.1':
- resolution:
- {
- integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==}
+ engines: {node: '>=12'}
'@istanbuljs/load-nyc-config@1.1.0':
- resolution:
- {
- integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
'@istanbuljs/schema@0.1.3':
- resolution:
- {
- integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+
+ '@jest/console@29.7.0':
+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/core@29.7.0':
+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
'@jest/create-cache-key-function@29.7.0':
- resolution:
- {
- integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jest/environment@29.7.0':
- resolution:
- {
- integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/expect-utils@29.7.0':
+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/expect@29.7.0':
+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jest/fake-timers@29.7.0':
- resolution:
- {
- integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/globals@29.7.0':
+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/reporters@29.7.0':
+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
'@jest/schemas@29.6.3':
- resolution:
- {
- integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/source-map@29.6.3':
+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/test-result@29.7.0':
+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jest/test-sequencer@29.7.0':
+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jest/transform@29.7.0':
- resolution:
- {
- integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jest/types@29.6.3':
- resolution:
- {
- integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jridgewell/gen-mapping@0.3.13':
- resolution:
- {
- integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==,
- }
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/remapping@2.3.5':
- resolution:
- {
- integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==,
- }
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
'@jridgewell/resolve-uri@3.1.2':
- resolution:
- {
- integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==,
- }
- engines: { node: '>=6.0.0' }
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
'@jridgewell/source-map@0.3.11':
- resolution:
- {
- integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==,
- }
+ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
'@jridgewell/sourcemap-codec@1.5.5':
- resolution:
- {
- integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==,
- }
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/trace-mapping@0.3.31':
- resolution:
- {
- integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==,
- }
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@js-joda/core@5.7.0':
+ resolution: {integrity: sha512-WBu4ULVVxySLLzK1Ppq+OdfP+adRS4ntmDQT915rzDJ++i95gc2jZkM5B6LWEAwN3lGXpfie3yPABozdD3K3Vg==}
- '@legendapp/list@2.0.16':
- resolution:
- {
- integrity: sha512-pFdeR0wpxCdpfHoHp5ghWBET/9vDxrG9curw+7xMoC8kHFogpn1TYJFwPV4xXrq9sLLA4MiwBPLQCvjHS5ruag==,
- }
+ '@js-temporal/polyfill@0.5.1':
+ resolution: {integrity: sha512-hloP58zRVCRSpgDxmqCWJNlizAlUgJFqG2ypq79DCvyv9tHjRYMDOcPFjzfl/A1/YxDvRCZz8wvZvmapQnKwFQ==}
+ engines: {node: '>=12'}
+
+ '@legendapp/list@2.0.19':
+ resolution: {integrity: sha512-zDWg8yg0smKxxk+M7gwAbZAnf5uczohPA+IjqLSkImz7+e9ytxeT0Mq35RBO9RTKODOXfV/aIgm1uqUHLBEdmg==}
peerDependencies:
react: '*'
react-native: '*'
'@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1':
- resolution:
- {
- integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==,
- }
+ resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==}
'@noble/ciphers@2.1.1':
- resolution:
- {
- integrity: sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==,
- }
- engines: { node: '>= 20.19.0' }
+ resolution: {integrity: sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==}
+ engines: {node: '>= 20.19.0'}
'@nodelib/fs.scandir@2.1.5':
- resolution:
- {
- integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
'@nodelib/fs.stat@2.0.5':
- resolution:
- {
- integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
'@nodelib/fs.walk@1.2.8':
- resolution:
- {
- integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==,
- }
- engines: { node: '>= 8' }
-
- '@pkgjs/parseargs@0.11.0':
- resolution:
- {
- integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@op-engineering/op-sqlite@15.2.5':
+ resolution: {integrity: sha512-Vmgwt0AzY7qoge3X6EONhsb5NlM2yoQUF0/lseUWBelfc9BUili7/DFsFsS73cvtYWlwPpqeTGOoce5mzHozBw==}
+ peerDependencies:
+ react: '*'
+ react-native: '*'
'@protobufjs/aspromise@1.1.2':
- resolution:
- {
- integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==,
- }
+ resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
'@protobufjs/base64@1.1.2':
- resolution:
- {
- integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==,
- }
+ resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
'@protobufjs/codegen@2.0.4':
- resolution:
- {
- integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==,
- }
+ resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
'@protobufjs/eventemitter@1.1.0':
- resolution:
- {
- integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==,
- }
+ resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
'@protobufjs/fetch@1.1.0':
- resolution:
- {
- integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==,
- }
+ resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
'@protobufjs/float@1.0.2':
- resolution:
- {
- integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==,
- }
+ resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
'@protobufjs/inquire@1.1.0':
- resolution:
- {
- integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==,
- }
+ resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
'@protobufjs/path@1.1.2':
- resolution:
- {
- integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==,
- }
+ resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
'@protobufjs/pool@1.1.0':
- resolution:
- {
- integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==,
- }
+ resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
'@protobufjs/utf8@1.1.0':
- resolution:
- {
- integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==,
- }
-
- '@react-native-community/cli-clean@20.0.2':
- resolution:
- {
- integrity: sha512-hfbC69fTD0fqZCCep8aqnVztBXUhAckNhi76lEV7USENtgBRwNq2s1wATgKAzOhxKuAL9TEkf5TZ/Dhp/YLhCQ==,
- }
-
- '@react-native-community/cli-config-android@20.0.2':
- resolution:
- {
- integrity: sha512-5yZ2Grr89omnMptV36ilV4EIrRLrIYQAsTTVU/hNI2vL7lz6WB8rPhP5QuovXk3TIjl1Wz2r9A6ZNO2SNJ8nig==,
- }
-
- '@react-native-community/cli-config-apple@20.0.2':
- resolution:
- {
- integrity: sha512-6MLL9Duu/JytqI6XfYuc78LSkRGfJoCqTSfqTJzBNSnz6S7XJps9spGBlgvrGh/j0howBpQlFH0J8Ws4N4mCxA==,
- }
-
- '@react-native-community/cli-config@20.0.2':
- resolution:
- {
- integrity: sha512-OuSAyqTv0MBbRqSyO+80IKasHnwLESydZBTrLjIGwGhDokMH07mZo8Io2H8X300WWa57LC2L8vQf73TzGS3ikQ==,
- }
-
- '@react-native-community/cli-doctor@20.0.2':
- resolution:
- {
- integrity: sha512-PQ8BdoNDE2OaMGLH66HZE7FV4qj0iWBHi0lkPUTb8eJJ+vlvzUtBf0N9QSv2TAzFjA59a2FElk6jBWnDC/ql1A==,
- }
-
- '@react-native-community/cli-platform-android@20.0.2':
- resolution:
- {
- integrity: sha512-Wo2AIkdv3PMEMT4k7QiNm3smNpWK6rd+glVH4Nm6Hco1EgLQ4I9x+gwcS1yN53UHYtq9YnguDCXk2L8duUESDQ==,
- }
-
- '@react-native-community/cli-platform-apple@20.0.2':
- resolution:
- {
- integrity: sha512-PdsQVFLY+wGnAN1kZ38XzzWiUlqaG1cXdpkQ1rYaiiNu3PVTc2/KtteLcPG/wbApbfoPggQ/ffh+JGg7NL+HNw==,
- }
-
- '@react-native-community/cli-platform-ios@20.0.2':
- resolution:
- {
- integrity: sha512-bVOqLsBztT+xVV65uztJ7R/dtjj4vaPXJU1RLi35zLtr1APAxzf+2ydiixxtBjNFylM3AZlF8iL5WXjeWVqrmA==,
- }
-
- '@react-native-community/cli-server-api@20.0.2':
- resolution:
- {
- integrity: sha512-u4tUzWnc+qthaDvd1NxdCqCNMY7Px6dAH1ODAXMtt+N27llGMJOl0J3slMx03dScftOWbGM61KA5cCpaxphYVQ==,
- }
-
- '@react-native-community/cli-tools@20.0.2':
- resolution:
- {
- integrity: sha512-bPYhRYggW9IIM8pvrZF/0r6HaxCyEWDn6zfPQPMWlkQUwkzFZ8GBY/M7yiHgDzozWKPT4DqZPumrq806Vcksow==,
- }
-
- '@react-native-community/cli-types@20.0.2':
- resolution:
- {
- integrity: sha512-OZzy6U4M8Szg8iiF459OoTjRKggxLrdhZVHKfRhrAUfojhjRiWbJNkkPxJtOIPeNSgsB0heizgpE4QwCgnYeuQ==,
- }
-
- '@react-native-community/cli@20.0.2':
- resolution:
- {
- integrity: sha512-ocgRFKRLX8b5rEK38SJfpr0AMl6SqseWljk6c5LxCG/zpCfPPNQdXq1OsDvmEwsqO4OEQ6tmOaSm9OgTm6FhbQ==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
+
+ '@react-native-community/cli-clean@20.1.1':
+ resolution: {integrity: sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==}
+
+ '@react-native-community/cli-config-android@20.1.1':
+ resolution: {integrity: sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==}
+
+ '@react-native-community/cli-config-apple@20.1.1':
+ resolution: {integrity: sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==}
+
+ '@react-native-community/cli-config@20.1.1':
+ resolution: {integrity: sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==}
+
+ '@react-native-community/cli-doctor@20.1.1':
+ resolution: {integrity: sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==}
+
+ '@react-native-community/cli-platform-android@20.1.1':
+ resolution: {integrity: sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==}
+
+ '@react-native-community/cli-platform-apple@20.1.1':
+ resolution: {integrity: sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==}
+
+ '@react-native-community/cli-platform-ios@20.1.1':
+ resolution: {integrity: sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==}
+
+ '@react-native-community/cli-server-api@20.1.1':
+ resolution: {integrity: sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==}
+
+ '@react-native-community/cli-tools@20.1.1':
+ resolution: {integrity: sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==}
+
+ '@react-native-community/cli-types@20.1.1':
+ resolution: {integrity: sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==}
+
+ '@react-native-community/cli@20.1.1':
+ resolution: {integrity: sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==}
+ engines: {node: '>=20.19.4'}
hasBin: true
- '@react-native-community/slider@5.1.1':
- resolution:
- {
- integrity: sha512-W98If/LnTaziU3/0h5+G1LvJaRhMc6iLQBte6UWa4WBIHDMaDPglNBIFKcCXc9Dxp83W+f+5Wv22Olq9M2HJYA==,
- }
+ '@react-native-community/slider@5.1.2':
+ resolution: {integrity: sha512-UV/MjCyCtSjS5BQDrrGIMmCXm309xEG6XbR0Dj65kzTraJSVDxSjQS2uBUXgX+5SZUOCzCxzv3OufOZBdtQY4w==}
'@react-native-cookies/cookies@6.2.1':
- resolution:
- {
- integrity: sha512-D17wCA0DXJkGJIxkL74Qs9sZ3sA+c+kCoGmXVknW7bVw/W+Vv1m/7mWTNi9DLBZSRddhzYw8SU0aJapIaM/g5w==,
- }
+ resolution: {integrity: sha512-D17wCA0DXJkGJIxkL74Qs9sZ3sA+c+kCoGmXVknW7bVw/W+Vv1m/7mWTNi9DLBZSRddhzYw8SU0aJapIaM/g5w==}
+ deprecated: This package is deprecated. Use @preeternal/react-native-cookie-manager or react-native-nitro-cookies instead.
peerDependencies:
react-native: '>= 0.60.2'
'@react-native-documents/picker@10.1.7':
- resolution:
- {
- integrity: sha512-Tb8SPU+pHxrSJmDHBozSUStIPeyFHTHLrU3MW0N3sUAioLd5z+nmUdypfg5fs+Yzp7KTxVW06APe2HLB1ysLww==,
- }
+ resolution: {integrity: sha512-Tb8SPU+pHxrSJmDHBozSUStIPeyFHTHLrU3MW0N3sUAioLd5z+nmUdypfg5fs+Yzp7KTxVW06APe2HLB1ysLww==}
peerDependencies:
react: '*'
react-native: '*'
- '@react-native-google-signin/google-signin@16.0.0':
- resolution:
- {
- integrity: sha512-jVuzPo8odREekFc0b4RK3YsqCvedtLIM2P6NSszFr9cYyhKrUNikffPapL6LmkL9qkb8K6pDeb5CXg4qALOc0g==,
- }
+ '@react-native-google-signin/google-signin@16.1.1':
+ resolution: {integrity: sha512-lcHBnZ7uvCJiWtGooKOklo/4okqszWvJ0BatW1UaIe+ynmpVpp1lyJkvv1Mj08d39k4soaWuhZVNKjD/RFL34Q==}
peerDependencies:
expo: '>=52.0.40'
react: '*'
@@ -2011,11 +1714,8 @@ packages:
optional: true
'@react-native-vector-icons/common@12.4.0':
- resolution:
- {
- integrity: sha512-t9W0q+AW7WH1Oj5aEg7wGNXDLZJb5sIVkAWo5qtad3PcbBADqoCdikRK/ToLK+xlB0TxjcuL0T74ogudMkYGeA==,
- }
- engines: { node: '>=20.19.0 <21.0.0 || >=22.0.0' }
+ resolution: {integrity: sha512-t9W0q+AW7WH1Oj5aEg7wGNXDLZJb5sIVkAWo5qtad3PcbBADqoCdikRK/ToLK+xlB0TxjcuL0T74ogudMkYGeA==}
+ engines: {node: '>=20.19.0 <21.0.0 || >=22.0.0'}
hasBin: true
peerDependencies:
'@react-native-vector-icons/get-image': ^12.3.0
@@ -2026,53 +1726,51 @@ packages:
optional: true
'@react-native-vector-icons/material-design-icons@12.4.0':
- resolution:
- {
- integrity: sha512-4ewAiHdOCujqprUJYFnBcUJduNddAc+w3Plnl1NhJksAyOaHzCNBg01JgVtkysxPho6++OOMge3FhwyBT8Wtcg==,
- }
- engines: { node: '>= 18.0.0' }
+ resolution: {integrity: sha512-4ewAiHdOCujqprUJYFnBcUJduNddAc+w3Plnl1NhJksAyOaHzCNBg01JgVtkysxPho6++OOMge3FhwyBT8Wtcg==}
+ engines: {node: '>= 18.0.0'}
peerDependencies:
react: '*'
react-native: '*'
- '@react-native/assets-registry@0.81.5':
- resolution:
- {
- integrity: sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==,
- }
- engines: { node: '>= 20.19.4' }
+ '@react-native/assets-registry@0.81.6':
+ resolution: {integrity: sha512-nNlJ7mdXFoq/7LMG3eJIncqjgXkpDJak3xO8Lb4yQmFI3XVI1nupPRjlYRY0ham1gLE0F/AWvKFChsKUfF5lOQ==}
+ engines: {node: '>= 20.19.4'}
'@react-native/babel-plugin-codegen@0.81.5':
- resolution:
- {
- integrity: sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==,
- }
- engines: { node: '>= 20.19.4' }
+ resolution: {integrity: sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==}
+ engines: {node: '>= 20.19.4'}
+
+ '@react-native/babel-plugin-codegen@0.81.6':
+ resolution: {integrity: sha512-OBx6/S0h0MEAoUXhRCWBu00+Oz0gCcHzduTHN++qnK7cIZUhxASUdplYzBZTtTdtA+Zr0bDzH05EsXq718WgFA==}
+ engines: {node: '>= 20.19.4'}
'@react-native/babel-preset@0.81.5':
- resolution:
- {
- integrity: sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==,
- }
- engines: { node: '>= 20.19.4' }
+ resolution: {integrity: sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==}
+ engines: {node: '>= 20.19.4'}
+ peerDependencies:
+ '@babel/core': '*'
+
+ '@react-native/babel-preset@0.81.6':
+ resolution: {integrity: sha512-RtIr82ccPoyMLmIC3/vCG96MzRmIT+IzQkjCgTS5b93uAxiER9BS7+d1l7+zD00VanClt6CTBM4K4n6RCnAykg==}
+ engines: {node: '>= 20.19.4'}
peerDependencies:
'@babel/core': '*'
'@react-native/codegen@0.81.5':
- resolution:
- {
- integrity: sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==,
- }
- engines: { node: '>= 20.19.4' }
+ resolution: {integrity: sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==}
+ engines: {node: '>= 20.19.4'}
+ peerDependencies:
+ '@babel/core': '*'
+
+ '@react-native/codegen@0.81.6':
+ resolution: {integrity: sha512-9KoYRep/KDnELLLmIYTtIIEOClVUJ88pxWObb/0sjkacA7uL4SgfbAg7rWLURAQJWI85L1YS67IhdEqNNk1I7w==}
+ engines: {node: '>= 20.19.4'}
peerDependencies:
'@babel/core': '*'
- '@react-native/community-cli-plugin@0.81.5':
- resolution:
- {
- integrity: sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==,
- }
- engines: { node: '>= 20.19.4' }
+ '@react-native/community-cli-plugin@0.81.6':
+ resolution: {integrity: sha512-oTwIheF4TU7NkfoHxwSQAKtIDx4SQEs2xufgM3gguY7WkpnhGa/BYA/A+hdHXfqEKJFKlHcXQu4BrV/7Sv1fhw==}
+ engines: {node: '>= 20.19.4'}
peerDependencies:
'@react-native-community/cli': '*'
'@react-native/metro-config': '*'
@@ -2083,120 +1781,93 @@ packages:
optional: true
'@react-native/debugger-frontend@0.81.5':
- resolution:
- {
- integrity: sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==,
- }
- engines: { node: '>= 20.19.4' }
+ resolution: {integrity: sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==}
+ engines: {node: '>= 20.19.4'}
+
+ '@react-native/debugger-frontend@0.81.6':
+ resolution: {integrity: sha512-aGw28yzbtm25GQuuxNeVAT72tLuGoH0yh79uYOIZkvjI+5x1NjZyPrgiLZ2LlZi5dJdxfbz30p1zUcHvcAzEZw==}
+ engines: {node: '>= 20.19.4'}
'@react-native/dev-middleware@0.81.5':
- resolution:
- {
- integrity: sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==,
- }
- engines: { node: '>= 20.19.4' }
-
- '@react-native/eslint-config@0.81.5':
- resolution:
- {
- integrity: sha512-6MAn0ZjWQrWMqW09pEWTQAhLZ3WWB+zDRAZ/D1xj1Wyaz2qQH5KYfZMgnanhYIYuX7sxTS50ACMr/IOptMS1Og==,
- }
- engines: { node: '>= 20.19.4' }
+ resolution: {integrity: sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==}
+ engines: {node: '>= 20.19.4'}
+
+ '@react-native/dev-middleware@0.81.6':
+ resolution: {integrity: sha512-mK2M3gJ25LtgtqxS1ZXe1vHrz8APOA79Ot/MpbLeovFgLu6YJki0kbO5MRpJagTd+HbesVYSZb/BhAsGN7QAXA==}
+ engines: {node: '>= 20.19.4'}
+
+ '@react-native/eslint-config@0.81.6':
+ resolution: {integrity: sha512-Uur91Ss9L8W7omBAqnNe80GNUNn5qQXYuP0xmiKmytGk0ttG9QkcOma4aS4nR3m8O7v0kFA7U3+AD5an526Jsg==}
+ engines: {node: '>= 20.19.4'}
peerDependencies:
eslint: '>=8'
prettier: '>=2'
- '@react-native/eslint-plugin@0.81.5':
- resolution:
- {
- integrity: sha512-PyI+Xal1gBGKmcM595nxxXdCK12nXpEMwkg67POurC2t1J3jT9v8Dq3wiNsoBLXnRo8VdOME+BLwQQBeGedoTA==,
- }
- engines: { node: '>= 20.19.4' }
-
- '@react-native/gradle-plugin@0.81.5':
- resolution:
- {
- integrity: sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==,
- }
- engines: { node: '>= 20.19.4' }
-
- '@react-native/js-polyfills@0.81.5':
- resolution:
- {
- integrity: sha512-fB7M1CMOCIUudTRuj7kzxIBTVw2KXnsgbQ6+4cbqSxo8NmRRhA0Ul4ZUzZj3rFd3VznTL4Brmocv1oiN0bWZ8w==,
- }
- engines: { node: '>= 20.19.4' }
-
- '@react-native/metro-babel-transformer@0.81.5':
- resolution:
- {
- integrity: sha512-Vwm6gJ3VlP+QKAEU98v1dwZKqbUcIYP47K614SktA9dYDOtw+rEBjyzvNf69S4YG5JRvDmzw36E9zxtcg6ABOw==,
- }
- engines: { node: '>= 20.19.4' }
+ '@react-native/eslint-plugin@0.81.6':
+ resolution: {integrity: sha512-2wLmnq6l2dualDoAj42P4miwReXt5i7rad31zenhYFBSUNt849y2sroP2I6Yjh0r+UqBdDlf6QN2W+Pdmi6pJw==}
+ engines: {node: '>= 20.19.4'}
+
+ '@react-native/eslint-plugin@0.83.2':
+ resolution: {integrity: sha512-mgqFrE66LQHsJq4eVCOwqi5dfJS7+2AmDk3UT+XnlntGz9pJBg/+gbZGp4aVfySrrPiYfYKVV7Vo9aw33SW6/g==}
+ engines: {node: '>= 20.19.4'}
+
+ '@react-native/gradle-plugin@0.81.6':
+ resolution: {integrity: sha512-atUItC5MZ6yaNaI0sbsoDwUdF+KMNZcMKBIrNhXlUyIj3x1AQ6Cf8CHHv6Qokn8ZFw+uU6GWmQSiOWYUbmi8Ag==}
+ engines: {node: '>= 20.19.4'}
+
+ '@react-native/js-polyfills@0.81.6':
+ resolution: {integrity: sha512-P5MWH/9vM24XkJ1TasCq42DMLoCUjZVSppTn6VWv/cI65NDjuYEy7bUSaXbYxGTnqiKyPG5Y+ADymqlIkdSAcw==}
+ engines: {node: '>= 20.19.4'}
+
+ '@react-native/metro-babel-transformer@0.81.6':
+ resolution: {integrity: sha512-Z5up8Z1I6PAgY6Z78yXmRJHps5d8FqQIYbAALmSyg5tmtrJyd04JgrwEWhwH1HQsxB5beWwQRntA5WUfWNlQPA==}
+ engines: {node: '>= 20.19.4'}
peerDependencies:
'@babel/core': '*'
- '@react-native/metro-config@0.81.5':
- resolution:
- {
- integrity: sha512-3Q0jQt5Zcen4+udkE0XQIS8VmI+vx3sWl5R2o36vHkg8eXpiQjvz/jY0sZmC8ahailiEWEscFklQzhTmizhdPQ==,
- }
- engines: { node: '>= 20.19.4' }
+ '@react-native/metro-config@0.81.6':
+ resolution: {integrity: sha512-tdLKkC1Dv0EW6dayL0pAItbdWhrVZDCiTcyb43cLtkeaQYpJgXeRX+1PsmkFywZDn/ojxiGxe/HLg5yZH0gbdA==}
+ engines: {node: '>= 20.19.4'}
'@react-native/normalize-colors@0.81.5':
- resolution:
- {
- integrity: sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==,
- }
-
- '@react-native/typescript-config@0.81.5':
- resolution:
- {
- integrity: sha512-NeCecPmlW+fcwFKzDzT1GcEQmJSE6tLz9Fg6wGjKL1l7pqUzpQIQg1iF3OovHOlyfPiB98+XRHnIBvlTSJ5R0w==,
- }
-
- '@react-native/virtualized-lists@0.81.5':
- resolution:
- {
- integrity: sha512-UVXgV/db25OPIvwZySeToXD/9sKKhOdkcWmmf4Jh8iBZuyfML+/5CasaZ1E7Lqg6g3uqVQq75NqIwkYmORJMPw==,
- }
- engines: { node: '>= 20.19.4' }
- peerDependencies:
- '@types/react': ^19.1.0
+ resolution: {integrity: sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==}
+
+ '@react-native/normalize-colors@0.81.6':
+ resolution: {integrity: sha512-/OCgUysHIFhfmZxbJAydVc58l2SGIZbWpbQXBrYEYch8YElBbDFQ8IUtyogB7YJJQ8ewHZFj93rQGaECgkvvcw==}
+
+ '@react-native/typescript-config@0.81.6':
+ resolution: {integrity: sha512-1eu60ilbT8dm8euTvzmlqQ+oC2eb0g6hXEcvVj/TJtLWDLl7GSmAmT8oD+5445D1zTiEIMIhpK70OAPgoRk/zg==}
+
+ '@react-native/virtualized-lists@0.81.6':
+ resolution: {integrity: sha512-1RrZl3a7iCoAS2SGaRLjJPIn8bg/GLNXzqkIB2lufXcJsftu1umNLRIi17ZoDRejAWSd2pUfUtQBASo4R2mw4Q==}
+ engines: {node: '>= 20.19.4'}
+ peerDependencies:
+ '@types/react': ^19.1.4
react: '*'
react-native: '*'
peerDependenciesMeta:
'@types/react':
optional: true
- '@react-navigation/bottom-tabs@7.8.6':
- resolution:
- {
- integrity: sha512-0wGtU+I1rCUjvAqKtzD2dwQaTICFf5J233vkg20cLrx8LNQPAgSsbnsDSM6S315OOoVLCIL1dcrNv7ExLBlWfw==,
- }
+ '@react-navigation/bottom-tabs@7.14.0':
+ resolution: {integrity: sha512-oG2VdoInuIyK0o9o90Yo47hTCS+sPyVE7k8eSB37vt3pq3uQxjh8V3xJpsQfOfNlRUXOPB/ejH93nSBlP7ZHmQ==}
peerDependencies:
- '@react-navigation/native': ^7.1.21
+ '@react-navigation/native': ^7.1.28
react: '>= 18.2.0'
react-native: '*'
react-native-safe-area-context: '>= 4.0.0'
react-native-screens: '>= 4.0.0'
- '@react-navigation/core@7.13.2':
- resolution:
- {
- integrity: sha512-A0pFeZlKp+FJob2lVr7otDt3M4rsSJrnAfXWoWR9JVeFtfEXsH/C0s7xtpDCMRUO58kzSBoTF1GYzoMC5DLD4g==,
- }
+ '@react-navigation/core@7.14.0':
+ resolution: {integrity: sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==}
peerDependencies:
react: '>= 18.2.0'
- '@react-navigation/elements@2.8.3':
- resolution:
- {
- integrity: sha512-0c5nSDPP3bUFujgkSVqqMShaAup3XIxNe1KTK9LSmwKgWEneyo6OPIjIdiEwPlZvJZKi7ag5hDjacQLGwO0LGA==,
- }
+ '@react-navigation/elements@2.9.5':
+ resolution: {integrity: sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==}
peerDependencies:
'@react-native-masked-view/masked-view': '>= 0.2.0'
- '@react-navigation/native': ^7.1.21
+ '@react-navigation/native': ^7.1.28
react: '>= 18.2.0'
react-native: '*'
react-native-safe-area-context: '>= 4.0.0'
@@ -2204,40 +1875,28 @@ packages:
'@react-native-masked-view/masked-view':
optional: true
- '@react-navigation/native-stack@7.8.0':
- resolution:
- {
- integrity: sha512-iRqQY+IYB610BJY/335/kdNDhXQ8L9nPUlIT+DSk88FA86+C+4/vek8wcKw8IrfwdorT4m+6TY0v7Qnrt+WLKQ==,
- }
+ '@react-navigation/native-stack@7.13.0':
+ resolution: {integrity: sha512-5OOp1IKEd5woHl9hGBU0qCAfrQ4+7Tqej0HzDzGQeXzS8tg9gq84x1qUdRvFk5BXbhuAyvJliY9F1/I07d2X0A==}
peerDependencies:
- '@react-navigation/native': ^7.1.21
+ '@react-navigation/native': ^7.1.28
react: '>= 18.2.0'
react-native: '*'
react-native-safe-area-context: '>= 4.0.0'
react-native-screens: '>= 4.0.0'
- '@react-navigation/native@7.1.21':
- resolution:
- {
- integrity: sha512-mhpAewdivBL01ibErr91FUW9bvKhfAF6Xv/yr6UOJtDhv0jU6iUASUcA3i3T8VJCOB/vxmoke7VDp8M+wBFs/Q==,
- }
+ '@react-navigation/native@7.1.28':
+ resolution: {integrity: sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==}
peerDependencies:
react: '>= 18.2.0'
react-native: '*'
- '@react-navigation/routers@7.5.2':
- resolution:
- {
- integrity: sha512-kymreY5aeTz843E+iPAukrsOtc7nabAH6novtAPREmmGu77dQpfxPB2ZWpKb5nRErIRowp1kYRoN2Ckl+S6JYw==,
- }
+ '@react-navigation/routers@7.5.3':
+ resolution: {integrity: sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==}
- '@react-navigation/stack@7.6.7':
- resolution:
- {
- integrity: sha512-8NZWKTBYRVl8oSvhLKs26C6Dw5a3OhyfRc8ITS9A0kRSYaaX/KcZpObbAxp8kCJfTaJ7ZmghyX2NCGwnKw6V7A==,
- }
+ '@react-navigation/stack@7.7.2':
+ resolution: {integrity: sha512-dBXj+YEqfLsLQmmNyZ9lgu11N0JfpFCjjP4iEtlC1dPNNau2Rv18LEejXNU/k/fIgcfzYXFdQeiyEFW5O3f5Fw==}
peerDependencies:
- '@react-navigation/native': ^7.1.21
+ '@react-navigation/native': ^7.1.28
react: '>= 18.2.0'
react-native: '*'
react-native-gesture-handler: '>= 2.0.0'
@@ -2245,189 +1904,114 @@ packages:
react-native-screens: '>= 4.0.0'
'@shopify/flash-list@2.0.2':
- resolution:
- {
- integrity: sha512-zhlrhA9eiuEzja4wxVvotgXHtqd3qsYbXkQ3rsBfOgbFA9BVeErpDE/yEwtlIviRGEqpuFj/oU5owD6ByaNX+w==,
- }
+ resolution: {integrity: sha512-zhlrhA9eiuEzja4wxVvotgXHtqd3qsYbXkQ3rsBfOgbFA9BVeErpDE/yEwtlIviRGEqpuFj/oU5owD6ByaNX+w==}
peerDependencies:
'@babel/runtime': '*'
react: '*'
react-native: '*'
'@sideway/address@4.1.5':
- resolution:
- {
- integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==,
- }
+ resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
'@sideway/formula@3.0.1':
- resolution:
- {
- integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==,
- }
+ resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
'@sideway/pinpoint@2.0.0':
- resolution:
- {
- integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==,
- }
+ resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
- '@sinclair/typebox@0.27.8':
- resolution:
- {
- integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==,
- }
+ '@sinclair/typebox@0.27.10':
+ resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==}
'@sinonjs/commons@3.0.1':
- resolution:
- {
- integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==,
- }
+ resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
'@sinonjs/fake-timers@10.3.0':
- resolution:
- {
- integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==,
- }
+ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
+
+ '@tediousjs/connection-string@0.5.0':
+ resolution: {integrity: sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==}
'@types/babel__core@7.20.5':
- resolution:
- {
- integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==,
- }
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
'@types/babel__generator@7.27.0':
- resolution:
- {
- integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==,
- }
+ resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
'@types/babel__template@7.4.4':
- resolution:
- {
- integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==,
- }
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
'@types/babel__traverse@7.28.0':
- resolution:
- {
- integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==,
- }
+ resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+
+ '@types/better-sqlite3@7.6.13':
+ resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==}
'@types/color-convert@2.0.4':
- resolution:
- {
- integrity: sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==,
- }
+ resolution: {integrity: sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==}
'@types/color-name@1.1.5':
- resolution:
- {
- integrity: sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==,
- }
+ resolution: {integrity: sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==}
'@types/color@4.2.0':
- resolution:
- {
- integrity: sha512-6+xrIRImMtGAL2X3qYkd02Mgs+gFGs+WsK0b7VVMaO4mYRISwyTjcqNrO0mNSmYEoq++rSLDB2F5HDNmqfOe+A==,
- }
+ resolution: {integrity: sha512-6+xrIRImMtGAL2X3qYkd02Mgs+gFGs+WsK0b7VVMaO4mYRISwyTjcqNrO0mNSmYEoq++rSLDB2F5HDNmqfOe+A==}
'@types/graceful-fs@4.1.9':
- resolution:
- {
- integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==,
- }
+ resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
'@types/hammerjs@2.0.46':
- resolution:
- {
- integrity: sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==,
- }
+ resolution: {integrity: sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==}
'@types/istanbul-lib-coverage@2.0.6':
- resolution:
- {
- integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==,
- }
+ resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
'@types/istanbul-lib-report@3.0.3':
- resolution:
- {
- integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==,
- }
+ resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
'@types/istanbul-reports@3.0.4':
- resolution:
- {
- integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==,
- }
+ resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+
+ '@types/jest@29.5.14':
+ resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==}
'@types/json-schema@7.0.15':
- resolution:
- {
- integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==,
- }
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
'@types/lodash-es@4.17.12':
- resolution:
- {
- integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==,
- }
-
- '@types/lodash@4.17.21':
- resolution:
- {
- integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==,
- }
-
- '@types/node@24.10.1':
- resolution:
- {
- integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==,
- }
+ resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
+
+ '@types/lodash@4.17.23':
+ resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==}
+
+ '@types/mssql@9.1.9':
+ resolution: {integrity: sha512-P0nCgw6vzY23UxZMnbI4N7fnLGANt4LI4yvxze1paPj+LuN28cFv5EI+QidP8udnId/BKhkcRhm/BleNsjK65A==}
+
+ '@types/node@25.2.3':
+ resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==}
'@types/react@19.1.17':
- resolution:
- {
- integrity: sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==,
- }
+ resolution: {integrity: sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==}
+
+ '@types/readable-stream@4.0.23':
+ resolution: {integrity: sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==}
'@types/sanitize-html@2.16.0':
- resolution:
- {
- integrity: sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==,
- }
+ resolution: {integrity: sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==}
'@types/semver@7.7.1':
- resolution:
- {
- integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==,
- }
+ resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
'@types/stack-utils@2.0.3':
- resolution:
- {
- integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==,
- }
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
'@types/yargs-parser@21.0.3':
- resolution:
- {
- integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==,
- }
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
'@types/yargs@17.0.35':
- resolution:
- {
- integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==,
- }
+ resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
'@typescript-eslint/eslint-plugin@7.18.0':
- resolution:
- {
- integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==,
- }
- engines: { node: ^18.18.0 || >=20.0.0 }
+ resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
'@typescript-eslint/parser': ^7.0.0
eslint: ^8.56.0
@@ -2436,12 +2020,17 @@ packages:
typescript:
optional: true
+ '@typescript-eslint/eslint-plugin@8.56.0':
+ resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.56.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/parser@7.18.0':
- resolution:
- {
- integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==,
- }
- engines: { node: ^18.18.0 || >=20.0.0 }
+ resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
typescript: '*'
@@ -2449,26 +2038,40 @@ packages:
typescript:
optional: true
+ '@typescript-eslint/parser@8.56.0':
+ resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/project-service@8.56.0':
+ resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/scope-manager@5.62.0':
- resolution:
- {
- integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@typescript-eslint/scope-manager@7.18.0':
- resolution:
- {
- integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==,
- }
- engines: { node: ^18.18.0 || >=20.0.0 }
+ resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@typescript-eslint/scope-manager@8.56.0':
+ resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/tsconfig-utils@8.56.0':
+ resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/type-utils@7.18.0':
- resolution:
- {
- integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==,
- }
- engines: { node: ^18.18.0 || >=20.0.0 }
+ resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
typescript: '*'
@@ -2476,26 +2079,28 @@ packages:
typescript:
optional: true
+ '@typescript-eslint/type-utils@8.56.0':
+ resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/types@5.62.0':
- resolution:
- {
- integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@typescript-eslint/types@7.18.0':
- resolution:
- {
- integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==,
- }
- engines: { node: ^18.18.0 || >=20.0.0 }
+ resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@typescript-eslint/types@8.56.0':
+ resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@5.62.0':
- resolution:
- {
- integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -2503,441 +2108,281 @@ packages:
optional: true
'@typescript-eslint/typescript-estree@7.18.0':
- resolution:
- {
- integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==,
- }
- engines: { node: ^18.18.0 || >=20.0.0 }
+ resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
+ '@typescript-eslint/typescript-estree@8.56.0':
+ resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/utils@5.62.0':
- resolution:
- {
- integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
'@typescript-eslint/utils@7.18.0':
- resolution:
- {
- integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==,
- }
- engines: { node: ^18.18.0 || >=20.0.0 }
+ resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==}
+ engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
+ '@typescript-eslint/utils@8.56.0':
+ resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/visitor-keys@5.62.0':
- resolution:
- {
- integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@typescript-eslint/visitor-keys@7.18.0':
- resolution:
- {
- integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==,
- }
- engines: { node: ^18.18.0 || >=20.0.0 }
+ resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@typescript-eslint/visitor-keys@8.56.0':
+ resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typespec/ts-http-runtime@0.3.3':
+ resolution: {integrity: sha512-91fp6CAAJSRtH5ja95T1FHSKa8aPW9/Zw6cta81jlZTUw/+Vq8jM/AfF/14h2b71wwR84JUTW/3Y8QPhDAawFA==}
+ engines: {node: '>=20.0.0'}
'@ungap/structured-clone@1.3.0':
- resolution:
- {
- integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==,
- }
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
'@urql/core@5.2.0':
- resolution:
- {
- integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==,
- }
+ resolution: {integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==}
'@urql/exchange-retry@1.3.2':
- resolution:
- {
- integrity: sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==,
- }
+ resolution: {integrity: sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==}
peerDependencies:
'@urql/core': ^5.0.0
- '@vscode/sudo-prompt@9.3.1':
- resolution:
- {
- integrity: sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==,
- }
+ '@vscode/sudo-prompt@9.3.2':
+ resolution: {integrity: sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==}
'@xmldom/xmldom@0.8.11':
- resolution:
- {
- integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==,
- }
- engines: { node: '>=10.0.0' }
+ resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==}
+ engines: {node: '>=10.0.0'}
abort-controller@3.0.0:
- resolution:
- {
- integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==,
- }
- engines: { node: '>=6.5' }
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
accepts@1.3.8:
- resolution:
- {
- integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
acorn-jsx@5.3.2:
- resolution:
- {
- integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==,
- }
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
acorn@8.15.0:
- resolution:
- {
- integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==,
- }
- engines: { node: '>=0.4.0' }
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ engines: {node: '>=0.4.0'}
hasBin: true
agent-base@7.1.4:
- resolution:
- {
- integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==,
- }
- engines: { node: '>= 14' }
+ resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
+ engines: {node: '>= 14'}
aggregate-error@3.1.0:
- resolution:
- {
- integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
ajv@6.12.6:
- resolution:
- {
- integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==,
- }
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
anser@1.4.10:
- resolution:
- {
- integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==,
- }
+ resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==}
ansi-escapes@4.3.2:
- resolution:
- {
- integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
ansi-fragments@0.2.1:
- resolution:
- {
- integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==,
- }
+ resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==}
ansi-regex@4.1.1:
- resolution:
- {
- integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
+ engines: {node: '>=6'}
ansi-regex@5.0.1:
- resolution:
- {
- integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
ansi-regex@6.2.2:
- resolution:
- {
- integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
+ engines: {node: '>=12'}
ansi-styles@3.2.1:
- resolution:
- {
- integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
ansi-styles@4.3.0:
- resolution:
- {
- integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
ansi-styles@5.2.0:
- resolution:
- {
- integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
ansi-styles@6.2.3:
- resolution:
- {
- integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
+ engines: {node: '>=12'}
any-promise@1.3.0:
- resolution:
- {
- integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==,
- }
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
anymatch@3.1.3:
- resolution:
- {
- integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
appdirsjs@1.2.7:
- resolution:
- {
- integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==,
- }
+ resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==}
arg@5.0.2:
- resolution:
- {
- integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==,
- }
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
argparse@1.0.10:
- resolution:
- {
- integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==,
- }
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
argparse@2.0.1:
- resolution:
- {
- integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==,
- }
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
array-buffer-byte-length@1.0.2:
- resolution:
- {
- integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
+ engines: {node: '>= 0.4'}
array-includes@3.1.9:
- resolution:
- {
- integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
+ engines: {node: '>= 0.4'}
array-union@2.1.0:
- resolution:
- {
- integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
array.prototype.findlast@1.2.5:
- resolution:
- {
- integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
+ engines: {node: '>= 0.4'}
array.prototype.flat@1.3.3:
- resolution:
- {
- integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
+ engines: {node: '>= 0.4'}
array.prototype.flatmap@1.3.3:
- resolution:
- {
- integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
+ engines: {node: '>= 0.4'}
array.prototype.tosorted@1.1.4:
- resolution:
- {
- integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
+ engines: {node: '>= 0.4'}
arraybuffer.prototype.slice@1.0.4:
- resolution:
- {
- integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
+ engines: {node: '>= 0.4'}
asap@2.0.6:
- resolution:
- {
- integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==,
- }
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
assert@2.1.0:
- resolution:
- {
- integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==,
- }
+ resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==}
astral-regex@1.0.0:
- resolution:
- {
- integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==}
+ engines: {node: '>=4'}
astral-regex@2.0.0:
- resolution:
- {
- integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
async-function@1.0.0:
- resolution:
- {
- integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
+ engines: {node: '>= 0.4'}
async-limiter@1.0.1:
- resolution:
- {
- integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==,
- }
+ resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==}
available-typed-arrays@1.0.7:
- resolution:
- {
- integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
await-lock@2.2.2:
- resolution:
- {
- integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==,
- }
+ resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
babel-jest@29.7.0:
- resolution:
- {
- integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@babel/core': ^7.8.0
+ babel-plugin-inline-import@3.0.0:
+ resolution: {integrity: sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==}
+
babel-plugin-istanbul@6.1.1:
- resolution:
- {
- integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
+ engines: {node: '>=8'}
babel-plugin-jest-hoist@29.6.3:
- resolution:
- {
- integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
babel-plugin-module-resolver@5.0.2:
- resolution:
- {
- integrity: sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==,
- }
+ resolution: {integrity: sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==}
- babel-plugin-polyfill-corejs2@0.4.14:
- resolution:
- {
- integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==,
- }
+ babel-plugin-polyfill-corejs2@0.4.15:
+ resolution: {integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
babel-plugin-polyfill-corejs3@0.13.0:
- resolution:
- {
- integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==,
- }
+ resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+
+ babel-plugin-polyfill-corejs3@0.14.0:
+ resolution: {integrity: sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
- babel-plugin-polyfill-regenerator@0.6.5:
- resolution:
- {
- integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==,
- }
+ babel-plugin-polyfill-regenerator@0.6.6:
+ resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
babel-plugin-react-compiler@1.0.0:
- resolution:
- {
- integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==,
- }
+ resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==}
babel-plugin-react-compiler@19.1.0-rc.3:
- resolution:
- {
- integrity: sha512-mjRn69WuTz4adL0bXGx8Rsyk1086zFJeKmes6aK0xPuK3aaXmDJdLHqwKKMrpm6KAI1MCoUK72d2VeqQbu8YIA==,
- }
+ resolution: {integrity: sha512-mjRn69WuTz4adL0bXGx8Rsyk1086zFJeKmes6aK0xPuK3aaXmDJdLHqwKKMrpm6KAI1MCoUK72d2VeqQbu8YIA==}
babel-plugin-react-native-web@0.21.2:
- resolution:
- {
- integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==,
- }
+ resolution: {integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==}
babel-plugin-syntax-hermes-parser@0.29.1:
- resolution:
- {
- integrity: sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==,
- }
+ resolution: {integrity: sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==}
babel-plugin-transform-flow-enums@0.0.2:
- resolution:
- {
- integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==,
- }
+ resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==}
babel-preset-current-node-syntax@1.2.0:
- resolution:
- {
- integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==,
- }
+ resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==}
peerDependencies:
'@babel/core': ^7.0.0 || ^8.0.0-0
- babel-preset-expo@54.0.7:
- resolution:
- {
- integrity: sha512-JENWk0bvxW4I1ftveO8GRtX2t2TH6N4Z0TPvIHxroZ/4SswUfyNsUNbbP7Fm4erj3ar/JHGri5kTZ+s3xdjHZw==,
- }
+ babel-preset-expo@54.0.10:
+ resolution: {integrity: sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==}
peerDependencies:
'@babel/runtime': ^7.20.0
expo: '*'
@@ -2949,568 +2394,370 @@ packages:
optional: true
babel-preset-jest@29.6.3:
- resolution:
- {
- integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@babel/core': ^7.0.0
badgin@1.2.3:
- resolution:
- {
- integrity: sha512-NQGA7LcfCpSzIbGRbkgjgdWkjy7HI+Th5VLxTJfW5EeaAf3fnS+xWQaQOCYiny+q6QSvxqoSO04vCx+4u++EJw==,
- }
+ resolution: {integrity: sha512-NQGA7LcfCpSzIbGRbkgjgdWkjy7HI+Th5VLxTJfW5EeaAf3fnS+xWQaQOCYiny+q6QSvxqoSO04vCx+4u++EJw==}
balanced-match@1.0.2:
- resolution:
- {
- integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
- }
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ balanced-match@4.0.3:
+ resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==}
+ engines: {node: 20 || >=22}
base64-js@1.5.1:
- resolution:
- {
- integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==,
- }
-
- baseline-browser-mapping@2.8.31:
- resolution:
- {
- integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==,
- }
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ baseline-browser-mapping@2.9.19:
+ resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==}
hasBin: true
better-opn@3.0.2:
- resolution:
- {
- integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==,
- }
- engines: { node: '>=12.0.0' }
+ resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==}
+ engines: {node: '>=12.0.0'}
+
+ better-sqlite3@12.6.2:
+ resolution: {integrity: sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==}
+ engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x}
big-integer@1.6.52:
- resolution:
- {
- integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==,
- }
- engines: { node: '>=0.6' }
+ resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
+ engines: {node: '>=0.6'}
bignumber.js@9.3.1:
- resolution:
- {
- integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==,
- }
+ resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==}
+
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
bl@4.1.0:
- resolution:
- {
- integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==,
- }
-
- body-parser@1.20.3:
- resolution:
- {
- integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==,
- }
- engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 }
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+
+ bl@6.1.6:
+ resolution: {integrity: sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==}
+
+ body-parser@1.20.4:
+ resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
boolbase@1.0.0:
- resolution:
- {
- integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==,
- }
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
bplist-creator@0.1.0:
- resolution:
- {
- integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==,
- }
+ resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==}
bplist-parser@0.3.1:
- resolution:
- {
- integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==,
- }
- engines: { node: '>= 5.10.0' }
+ resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==}
+ engines: {node: '>= 5.10.0'}
bplist-parser@0.3.2:
- resolution:
- {
- integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==,
- }
- engines: { node: '>= 5.10.0' }
+ resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==}
+ engines: {node: '>= 5.10.0'}
brace-expansion@1.1.12:
- resolution:
- {
- integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==,
- }
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
brace-expansion@2.0.2:
- resolution:
- {
- integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==,
- }
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+
+ brace-expansion@5.0.2:
+ resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==}
+ engines: {node: 20 || >=22}
braces@3.0.3:
- resolution:
- {
- integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
- }
- engines: { node: '>=8' }
-
- browserslist@4.28.0:
- resolution:
- {
- integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==,
- }
- engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.28.1:
+ resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
bser@2.1.1:
- resolution:
- {
- integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==,
- }
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
+
+ buffer-equal-constant-time@1.0.1:
+ resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
buffer-from@1.1.2:
- resolution:
- {
- integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==,
- }
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
buffer@5.7.1:
- resolution:
- {
- integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==,
- }
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ bundle-name@4.1.0:
+ resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
+ engines: {node: '>=18'}
bytes@3.1.2:
- resolution:
- {
- integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
call-bind-apply-helpers@1.0.2:
- resolution:
- {
- integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
call-bind@1.0.8:
- resolution:
- {
- integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
call-bound@1.0.4:
- resolution:
- {
- integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
callsites@3.1.0:
- resolution:
- {
- integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
camelcase@5.3.1:
- resolution:
- {
- integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
camelcase@6.3.0:
- resolution:
- {
- integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==,
- }
- engines: { node: '>=10' }
-
- caniuse-lite@1.0.30001757:
- resolution:
- {
- integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==,
- }
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
+ caniuse-lite@1.0.30001770:
+ resolution: {integrity: sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==}
chalk@2.4.2:
- resolution:
- {
- integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
chalk@4.1.2:
- resolution:
- {
- integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ char-regex@1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
cheerio-select@2.1.0:
- resolution:
- {
- integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==,
- }
+ resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
cheerio@1.0.0-rc.12:
- resolution:
- {
- integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==}
+ engines: {node: '>= 6'}
+
+ chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
chownr@3.0.0:
- resolution:
- {
- integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
+ engines: {node: '>=18'}
chrome-launcher@0.15.2:
- resolution:
- {
- integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==,
- }
- engines: { node: '>=12.13.0' }
+ resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==}
+ engines: {node: '>=12.13.0'}
hasBin: true
chromium-edge-launcher@0.2.0:
- resolution:
- {
- integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==,
- }
+ resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==}
ci-info@2.0.0:
- resolution:
- {
- integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==,
- }
+ resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
ci-info@3.9.0:
- resolution:
- {
- integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ engines: {node: '>=8'}
+
+ cjs-module-lexer@1.4.3:
+ resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
clean-stack@2.2.0:
- resolution:
- {
- integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ engines: {node: '>=6'}
cli-cursor@2.1.0:
- resolution:
- {
- integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}
+ engines: {node: '>=4'}
cli-cursor@3.1.0:
- resolution:
- {
- integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
cli-spinners@2.9.2:
- resolution:
- {
- integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
cli-truncate@2.1.0:
- resolution:
- {
- integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
cli-truncate@3.1.0:
- resolution:
- {
- integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+ resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
cliui@6.0.0:
- resolution:
- {
- integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==,
- }
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
cliui@8.0.1:
- resolution:
- {
- integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
clone@1.0.4:
- resolution:
- {
- integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==,
- }
- engines: { node: '>=0.8' }
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+
+ co@4.6.0:
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+
+ collect-v8-coverage@1.0.3:
+ resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==}
color-convert@1.9.3:
- resolution:
- {
- integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==,
- }
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
color-convert@2.0.1:
- resolution:
- {
- integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
- }
- engines: { node: '>=7.0.0' }
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
color-convert@3.1.3:
- resolution:
- {
- integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==,
- }
- engines: { node: '>=14.6' }
+ resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==}
+ engines: {node: '>=14.6'}
color-name@1.1.3:
- resolution:
- {
- integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==,
- }
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
color-name@1.1.4:
- resolution:
- {
- integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
- }
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
color-name@2.1.0:
- resolution:
- {
- integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==,
- }
- engines: { node: '>=12.20' }
+ resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==}
+ engines: {node: '>=12.20'}
color-string@1.9.1:
- resolution:
- {
- integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==,
- }
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
color-string@2.1.4:
- resolution:
- {
- integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==}
+ engines: {node: '>=18'}
color@3.2.1:
- resolution:
- {
- integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==,
- }
+ resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
color@4.2.3:
- resolution:
- {
- integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==,
- }
- engines: { node: '>=12.5.0' }
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+ engines: {node: '>=12.5.0'}
color@5.0.3:
- resolution:
- {
- integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==}
+ engines: {node: '>=18'}
colorette@1.4.0:
- resolution:
- {
- integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==,
- }
+ resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
colorette@2.0.20:
- resolution:
- {
- integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==,
- }
+ resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
command-exists@1.2.9:
- resolution:
- {
- integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==,
- }
+ resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==}
+
+ commander@11.1.0:
+ resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+ engines: {node: '>=16'}
commander@12.1.0:
- resolution:
- {
- integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
+ engines: {node: '>=18'}
commander@2.20.3:
- resolution:
- {
- integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==,
- }
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
commander@4.1.1:
- resolution:
- {
- integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
commander@7.2.0:
- resolution:
- {
- integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==,
- }
- engines: { node: '>= 10' }
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
commander@9.5.0:
- resolution:
- {
- integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==,
- }
- engines: { node: ^12.20.0 || >=14 }
+ resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
+ engines: {node: ^12.20.0 || >=14}
compressible@2.0.18:
- resolution:
- {
- integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
+ engines: {node: '>= 0.6'}
compression@1.8.1:
- resolution:
- {
- integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==}
+ engines: {node: '>= 0.8.0'}
concat-map@0.0.1:
- resolution:
- {
- integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==,
- }
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
connect@3.7.0:
- resolution:
- {
- integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==,
- }
- engines: { node: '>= 0.10.0' }
+ resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==}
+ engines: {node: '>= 0.10.0'}
content-type@1.0.5:
- resolution:
- {
- integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
convert-source-map@2.0.0:
- resolution:
- {
- integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==,
- }
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- core-js-compat@3.47.0:
- resolution:
- {
- integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==,
- }
+ core-js-compat@3.48.0:
+ resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==}
cosmiconfig@9.0.0:
- resolution:
- {
- integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
+ engines: {node: '>=14'}
peerDependencies:
typescript: '>=4.9.5'
peerDependenciesMeta:
typescript:
optional: true
+ create-jest@29.7.0:
+ resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+
cross-spawn@7.0.6:
- resolution:
- {
- integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
crypto-random-string@2.0.0:
- resolution:
- {
- integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
+ engines: {node: '>=8'}
css-select@5.2.2:
- resolution:
- {
- integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==,
- }
+ resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
css-what@6.2.2:
- resolution:
- {
- integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+ engines: {node: '>= 6'}
csstype@3.2.3:
- resolution:
- {
- integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==,
- }
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
data-view-buffer@1.0.2:
- resolution:
- {
- integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
+ engines: {node: '>= 0.4'}
data-view-byte-length@1.0.2:
- resolution:
- {
- integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
+ engines: {node: '>= 0.4'}
data-view-byte-offset@1.0.1:
- resolution:
- {
- integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
+ engines: {node: '>= 0.4'}
dayjs@1.11.19:
- resolution:
- {
- integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==,
- }
+ resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
debug@2.6.9:
- resolution:
- {
- integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==,
- }
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
@@ -3518,10 +2765,7 @@ packages:
optional: true
debug@3.2.7:
- resolution:
- {
- integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==,
- }
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
@@ -3529,11 +2773,8 @@ packages:
optional: true
debug@4.4.3:
- resolution:
- {
- integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==,
- }
- engines: { node: '>=6.0' }
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
@@ -3541,397 +2782,393 @@ packages:
optional: true
decamelize@1.2.0:
- resolution:
- {
- integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
decode-uri-component@0.2.2:
- resolution:
- {
- integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==,
- }
- engines: { node: '>=0.10' }
+ resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+ engines: {node: '>=0.10'}
+
+ decompress-response@6.0.0:
+ resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+ engines: {node: '>=10'}
dedent@0.6.0:
- resolution:
- {
- integrity: sha512-cSfRWjXJtZQeRuZGVvDrJroCR5V2UvBNUMHsPCdNYzuAG8b9V8aAy3KUcdQrGQPXs17Y+ojbPh1aOCplg9YR9g==,
- }
+ resolution: {integrity: sha512-cSfRWjXJtZQeRuZGVvDrJroCR5V2UvBNUMHsPCdNYzuAG8b9V8aAy3KUcdQrGQPXs17Y+ojbPh1aOCplg9YR9g==}
+
+ dedent@1.7.1:
+ resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
deep-extend@0.6.0:
- resolution:
- {
- integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==,
- }
- engines: { node: '>=4.0.0' }
+ resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
+ engines: {node: '>=4.0.0'}
deep-is@0.1.4:
- resolution:
- {
- integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==,
- }
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
deepmerge@3.3.0:
- resolution:
- {
- integrity: sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==}
+ engines: {node: '>=0.10.0'}
deepmerge@4.3.1:
- resolution:
- {
- integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ default-browser-id@5.0.1:
+ resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
+ engines: {node: '>=18'}
+
+ default-browser@5.5.0:
+ resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
+ engines: {node: '>=18'}
defaults@1.0.4:
- resolution:
- {
- integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==,
- }
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
define-data-property@1.1.4:
- resolution:
- {
- integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
define-lazy-prop@2.0.0:
- resolution:
- {
- integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
+
+ define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
define-properties@1.2.1:
- resolution:
- {
- integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
depd@2.0.0:
- resolution:
- {
- integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
destroy@1.2.0:
- resolution:
- {
- integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==,
- }
- engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 }
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
detect-libc@2.1.2:
- resolution:
- {
- integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
+ detect-newline@3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+
+ diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dir-glob@3.0.1:
- resolution:
- {
- integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
doctrine@2.1.0:
- resolution:
- {
- integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
doctrine@3.0.0:
- resolution:
- {
- integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==,
- }
- engines: { node: '>=6.0.0' }
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
dom-serializer@2.0.0:
- resolution:
- {
- integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==,
- }
+ resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
domelementtype@2.3.0:
- resolution:
- {
- integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==,
- }
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
domhandler@5.0.3:
- resolution:
- {
- integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
+ engines: {node: '>= 4'}
domutils@3.2.2:
- resolution:
- {
- integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==,
- }
+ resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
dotenv-expand@11.0.7:
- resolution:
- {
- integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==}
+ engines: {node: '>=12'}
dotenv@16.4.7:
- resolution:
- {
- integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
+ engines: {node: '>=12'}
dotenv@16.6.1:
- resolution:
- {
- integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==,
- }
- engines: { node: '>=12' }
-
- dunder-proto@1.0.1:
- resolution:
- {
- integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
+ engines: {node: '>=12'}
- eastasianwidth@0.2.0:
- resolution:
- {
- integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==,
- }
-
- ee-first@1.1.1:
- resolution:
- {
- integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==,
- }
-
- electron-to-chromium@1.5.260:
- resolution:
- {
- integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==,
- }
-
- emoji-regex@8.0.0:
- resolution:
- {
- integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==,
- }
+ drizzle-kit@1.0.0-beta.13-f728631:
+ resolution: {integrity: sha512-Yfjns5vbi3Y5LmQMWPPGjMh2mD20i1qwRHJrWnqD/O1EJgn4kfH0WuzMdXlqMRtocos+e6nJYm3ZJXeU1efHGQ==}
+ hasBin: true
- emoji-regex@9.2.2:
- resolution:
- {
- integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==,
- }
+ drizzle-orm@1.0.0-beta.13-f728631:
+ resolution: {integrity: sha512-P+QKVzS80WoeUm2cinAj6z5+56g3N1VlM4kfK29ppKOd1x6TOuYmY6RI9/ABTGxOCIrPEfrxijyqpAqIOwLrjg==}
+ peerDependencies:
+ '@aws-sdk/client-rds-data': '>=3'
+ '@cloudflare/workers-types': '>=4'
+ '@effect/sql': ^0.48.5
+ '@effect/sql-pg': ^0.49.7
+ '@electric-sql/pglite': '>=0.2.0'
+ '@libsql/client': '>=0.10.0'
+ '@libsql/client-wasm': '>=0.10.0'
+ '@neondatabase/serverless': '>=0.10.0'
+ '@op-engineering/op-sqlite': '>=2'
+ '@opentelemetry/api': ^1.4.1
+ '@planetscale/database': '>=1.13'
+ '@prisma/client': '*'
+ '@sqlitecloud/drivers': '>=1.0.653'
+ '@tidbcloud/serverless': '*'
+ '@tursodatabase/database': '>=0.2.1'
+ '@tursodatabase/database-common': '>=0.2.1'
+ '@tursodatabase/database-wasm': '>=0.2.1'
+ '@types/better-sqlite3': '*'
+ '@types/mssql': ^9.1.4
+ '@types/pg': '*'
+ '@types/sql.js': '*'
+ '@upstash/redis': '>=1.34.7'
+ '@vercel/postgres': '>=0.8.0'
+ '@xata.io/client': '*'
+ better-sqlite3: '>=9.3.0'
+ bun-types: '*'
+ expo-sqlite: '>=14.0.0'
+ gel: '>=2'
+ mssql: ^11.0.1
+ mysql2: '>=2'
+ pg: '>=8'
+ postgres: '>=3'
+ prisma: '*'
+ sql.js: '>=1'
+ sqlite3: '>=5'
+ peerDependenciesMeta:
+ '@aws-sdk/client-rds-data':
+ optional: true
+ '@cloudflare/workers-types':
+ optional: true
+ '@effect/sql':
+ optional: true
+ '@effect/sql-pg':
+ optional: true
+ '@electric-sql/pglite':
+ optional: true
+ '@libsql/client':
+ optional: true
+ '@libsql/client-wasm':
+ optional: true
+ '@neondatabase/serverless':
+ optional: true
+ '@op-engineering/op-sqlite':
+ optional: true
+ '@opentelemetry/api':
+ optional: true
+ '@planetscale/database':
+ optional: true
+ '@prisma/client':
+ optional: true
+ '@sqlitecloud/drivers':
+ optional: true
+ '@tidbcloud/serverless':
+ optional: true
+ '@tursodatabase/database':
+ optional: true
+ '@tursodatabase/database-common':
+ optional: true
+ '@tursodatabase/database-wasm':
+ optional: true
+ '@types/better-sqlite3':
+ optional: true
+ '@types/pg':
+ optional: true
+ '@types/sql.js':
+ optional: true
+ '@upstash/redis':
+ optional: true
+ '@vercel/postgres':
+ optional: true
+ '@xata.io/client':
+ optional: true
+ better-sqlite3:
+ optional: true
+ bun-types:
+ optional: true
+ expo-sqlite:
+ optional: true
+ gel:
+ optional: true
+ mysql2:
+ optional: true
+ pg:
+ optional: true
+ postgres:
+ optional: true
+ prisma:
+ optional: true
+ sql.js:
+ optional: true
+ sqlite3:
+ optional: true
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ ecdsa-sig-formatter@1.0.11:
+ resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ electron-to-chromium@1.5.286:
+ resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==}
+
+ emittery@0.13.1:
+ resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
+ engines: {node: '>=12'}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
encodeurl@1.0.2:
- resolution:
- {
- integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
encodeurl@2.0.0:
- resolution:
- {
- integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ end-of-stream@1.4.5:
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
entities@4.5.0:
- resolution:
- {
- integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==,
- }
- engines: { node: '>=0.12' }
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
entities@6.0.1:
- resolution:
- {
- integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==,
- }
- engines: { node: '>=0.12' }
+ resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
+ engines: {node: '>=0.12'}
+
+ entities@7.0.1:
+ resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
+ engines: {node: '>=0.12'}
env-editor@0.4.2:
- resolution:
- {
- integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==}
+ engines: {node: '>=8'}
env-paths@2.2.1:
- resolution:
- {
- integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==,
- }
- engines: { node: '>=6' }
-
- envinfo@7.20.0:
- resolution:
- {
- integrity: sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
+
+ envinfo@7.21.0:
+ resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==}
+ engines: {node: '>=4'}
hasBin: true
error-ex@1.3.4:
- resolution:
- {
- integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==,
- }
+ resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
error-stack-parser@2.1.4:
- resolution:
- {
- integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==,
- }
-
- errorhandler@1.5.1:
- resolution:
- {
- integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==,
- }
- engines: { node: '>= 0.8' }
-
- es-abstract@1.24.0:
- resolution:
- {
- integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
+
+ errorhandler@1.5.2:
+ resolution: {integrity: sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==}
+ engines: {node: '>= 0.8'}
+
+ es-abstract@1.24.1:
+ resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==}
+ engines: {node: '>= 0.4'}
es-define-property@1.0.1:
- resolution:
- {
- integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
es-errors@1.3.0:
- resolution:
- {
- integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==,
- }
- engines: { node: '>= 0.4' }
-
- es-iterator-helpers@1.2.1:
- resolution:
- {
- integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-iterator-helpers@1.2.2:
+ resolution: {integrity: sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==}
+ engines: {node: '>= 0.4'}
es-object-atoms@1.1.1:
- resolution:
- {
- integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
es-set-tostringtag@2.1.0:
- resolution:
- {
- integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
es-shim-unscopables@1.1.0:
- resolution:
- {
- integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
+ engines: {node: '>= 0.4'}
es-to-primitive@1.3.0:
- resolution:
- {
- integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
+ engines: {node: '>= 0.4'}
+
+ esbuild@0.25.12:
+ resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
+ engines: {node: '>=18'}
+ hasBin: true
escalade@3.2.0:
- resolution:
- {
- integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
escape-html@1.0.3:
- resolution:
- {
- integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==,
- }
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
escape-string-regexp@1.0.5:
- resolution:
- {
- integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==,
- }
- engines: { node: '>=0.8.0' }
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
escape-string-regexp@2.0.0:
- resolution:
- {
- integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
escape-string-regexp@4.0.0:
- resolution:
- {
- integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
eslint-config-prettier@8.10.2:
- resolution:
- {
- integrity: sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==,
- }
+ resolution: {integrity: sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
eslint-plugin-eslint-comments@3.2.0:
- resolution:
- {
- integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==,
- }
- engines: { node: '>=6.5.0' }
+ resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
+ engines: {node: '>=6.5.0'}
peerDependencies:
eslint: '>=4.19.1'
eslint-plugin-ft-flow@2.0.3:
- resolution:
- {
- integrity: sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==,
- }
- engines: { node: '>=12.22.0' }
+ resolution: {integrity: sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==}
+ engines: {node: '>=12.22.0'}
peerDependencies:
'@babel/eslint-parser': ^7.12.0
eslint: ^8.1.0
+ eslint-plugin-ft-flow@3.0.11:
+ resolution: {integrity: sha512-6ZJ4KYGYjIosCcU883zBBT1nFsKP58xrTOwguiw3/HRq0EpYAyhrF1nCGbK7V23cmKtPXMpDfl8qPupt5s5W8w==}
+ peerDependencies:
+ eslint: ^8.56.0 || ^9.0.0
+ hermes-eslint: '>=0.15.0'
+
eslint-plugin-jest@27.9.0:
- resolution:
- {
- integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0
eslint: ^7.0.0 || ^8.0.0
@@ -3942,342 +3179,263 @@ packages:
jest:
optional: true
+ eslint-plugin-jest@29.15.0:
+ resolution: {integrity: sha512-ZCGr7vTH2WSo2hrK5oM2RULFmMruQ7W3cX7YfwoTiPfzTGTFBMmrVIz45jZHd++cGKj/kWf02li/RhTGcANJSA==}
+ engines: {node: ^20.12.0 || ^22.0.0 || >=24.0.0}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': ^8.0.0
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ jest: '*'
+ typescript: '>=4.8.4 <6.0.0'
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ jest:
+ optional: true
+ typescript:
+ optional: true
+
eslint-plugin-react-hooks@5.2.0:
- resolution:
- {
- integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
+
+ eslint-plugin-react-hooks@7.0.1:
+ resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==}
+ engines: {node: '>=18'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
eslint-plugin-react-native-globals@0.1.2:
- resolution:
- {
- integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==,
- }
+ resolution: {integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==}
eslint-plugin-react-native@4.1.0:
- resolution:
- {
- integrity: sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==,
- }
+ resolution: {integrity: sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==}
peerDependencies:
eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8
+ eslint-plugin-react-native@5.0.0:
+ resolution: {integrity: sha512-VyWlyCC/7FC/aONibOwLkzmyKg4j9oI8fzrk9WYNs4I8/m436JuOTAFwLvEn1CVvc7La4cPfbCyspP4OYpP52Q==}
+ peerDependencies:
+ eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+
eslint-plugin-react@7.37.5:
- resolution:
- {
- integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
+ engines: {node: '>=4'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
eslint-scope@5.1.1:
- resolution:
- {
- integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==,
- }
- engines: { node: '>=8.0.0' }
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
eslint-scope@7.2.2:
- resolution:
- {
- integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-visitor-keys@2.1.0:
- resolution:
- {
- integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
+ engines: {node: '>=10'}
eslint-visitor-keys@3.4.3:
- resolution:
- {
- integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@5.0.0:
+ resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
eslint@8.57.1:
- resolution:
- {
- integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
espree@9.6.1:
- resolution:
- {
- integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==,
- }
- engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
esprima@4.0.1:
- resolution:
- {
- integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
hasBin: true
- esquery@1.6.0:
- resolution:
- {
- integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==,
- }
- engines: { node: '>=0.10' }
+ esquery@1.7.0:
+ resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
+ engines: {node: '>=0.10'}
esrecurse@4.3.0:
- resolution:
- {
- integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==,
- }
- engines: { node: '>=4.0' }
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
estraverse@4.3.0:
- resolution:
- {
- integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==,
- }
- engines: { node: '>=4.0' }
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
estraverse@5.3.0:
- resolution:
- {
- integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==,
- }
- engines: { node: '>=4.0' }
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
esutils@2.0.3:
- resolution:
- {
- integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
etag@1.8.1:
- resolution:
- {
- integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
event-target-shim@5.0.1:
- resolution:
- {
- integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
eventemitter3@4.0.7:
- resolution:
- {
- integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==,
- }
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
exec-async@2.2.0:
- resolution:
- {
- integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==,
- }
+ resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==}
execa@5.1.1:
- resolution:
- {
- integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==,
- }
- engines: { node: '>=10' }
-
- expo-application@7.0.7:
- resolution:
- {
- integrity: sha512-Jt1/qqnoDUbZ+bK91+dHaZ1vrPDtRBOltRa681EeedkisqguuEeUx4UHqwVyDK2oHWsK6lO3ojetoA4h8OmNcg==,
- }
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+
+ exit@0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+
+ expand-template@2.0.3:
+ resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
+ engines: {node: '>=6'}
+
+ expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ expo-application@7.0.8:
+ resolution: {integrity: sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==}
peerDependencies:
expo: '*'
- expo-asset@12.0.10:
- resolution:
- {
- integrity: sha512-pZyeJkoDsALh4gpCQDzTA/UCLaPH/1rjQNGubmLn/uDM27S4iYJb/YWw4+CNZOtd5bCUOhDPg5DtGQnydNFSXg==,
- }
+ expo-asset@12.0.12:
+ resolution: {integrity: sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==}
peerDependencies:
expo: '*'
react: '*'
react-native: '*'
- expo-clipboard@8.0.7:
- resolution:
- {
- integrity: sha512-zvlfFV+wB2QQrQnHWlo0EKHAkdi2tycLtE+EXFUWTPZYkgu1XcH+aiKfd4ul7Z0SDF+1IuwoiW9AA9eO35aj3Q==,
- }
+ expo-clipboard@8.0.8:
+ resolution: {integrity: sha512-VKoBkHIpZZDJTB0jRO4/PZskHdMNOEz3P/41tmM6fDuODMpqhvyWK053X0ebspkxiawJX9lX33JXHBCvVsTTOA==}
peerDependencies:
expo: '*'
react: '*'
react-native: '*'
- expo-constants@18.0.10:
- resolution:
- {
- integrity: sha512-Rhtv+X974k0Cahmvx6p7ER5+pNhBC0XbP1lRviL2J1Xl4sT2FBaIuIxF/0I0CbhOsySf0ksqc5caFweAy9Ewiw==,
- }
+ expo-constants@18.0.13:
+ resolution: {integrity: sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==}
peerDependencies:
expo: '*'
react-native: '*'
- expo-document-picker@14.0.7:
- resolution:
- {
- integrity: sha512-81Jh8RDD0GYBUoSTmIBq30hXXjmkDV1ZY2BNIp1+3HR5PDSh2WmdhD/Ezz5YFsv46hIXHsQc+Kh1q8vn6OLT9Q==,
- }
+ expo-document-picker@14.0.8:
+ resolution: {integrity: sha512-3tyQKpPqWWFlI8p9RiMX1+T1Zge5mEKeBuXWp1h8PEItFMUDSiOJbQ112sfdC6Hxt8wSxreV9bCRl/NgBdt+fA==}
peerDependencies:
expo: '*'
- expo-file-system@19.0.19:
- resolution:
- {
- integrity: sha512-OrpOV4fEBFMFv+jy7PnENpPbsWoBmqWGidSwh1Ai52PLl6JIInYGfZTc6kqyPNGtFTwm7Y9mSWnE8g+dtLxu7g==,
- }
+ expo-file-system@19.0.21:
+ resolution: {integrity: sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==}
peerDependencies:
expo: '*'
react-native: '*'
- expo-font@14.0.9:
- resolution:
- {
- integrity: sha512-xCoQbR/36qqB6tew/LQ6GWICpaBmHLhg/Loix5Rku/0ZtNaXMJv08M9o1AcrdiGTn/Xf/BnLu6DgS45cWQEHZg==,
- }
+ expo-font@14.0.11:
+ resolution: {integrity: sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==}
peerDependencies:
expo: '*'
react: '*'
react-native: '*'
- expo-haptics@15.0.7:
- resolution:
- {
- integrity: sha512-7flWsYPrwjJxZ8x82RiJtzsnk1Xp9ahnbd9PhCy3NnsemyMApoWIEUr4waPqFr80DtiLZfhD9VMLL1CKa8AImQ==,
- }
+ expo-haptics@15.0.8:
+ resolution: {integrity: sha512-lftutojy8Qs8zaDzzjwM3gKHFZ8bOOEZDCkmh2Ddpe95Ra6kt2izeOfOfKuP/QEh0MZ1j9TfqippyHdRd1ZM9g==}
peerDependencies:
expo: '*'
- expo-keep-awake@15.0.7:
- resolution:
- {
- integrity: sha512-CgBNcWVPnrIVII5G54QDqoE125l+zmqR4HR8q+MQaCfHet+dYpS5vX5zii/RMayzGN4jPgA4XYIQ28ePKFjHoA==,
- }
+ expo-keep-awake@15.0.8:
+ resolution: {integrity: sha512-YK9M1VrnoH1vLJiQzChZgzDvVimVoriibiDIFLbQMpjYBnvyfUeHJcin/Gx1a+XgupNXy92EQJLgI/9ZuXajYQ==}
peerDependencies:
expo: '*'
react: '*'
- expo-linear-gradient@15.0.7:
- resolution:
- {
- integrity: sha512-yF+y+9Shpr/OQFfy/wglB/0bykFMbwHBTuMRa5Of/r2P1wbkcacx8rg0JsUWkXH/rn2i2iWdubyqlxSJa3ggZA==,
- }
+ expo-linear-gradient@15.0.8:
+ resolution: {integrity: sha512-V2d8Wjn0VzhPHO+rrSBtcl+Fo+jUUccdlmQ6OoL9/XQB7Qk3d9lYrqKDJyccwDxmQT10JdST3Tmf2K52NLc3kw==}
peerDependencies:
expo: '*'
react: '*'
react-native: '*'
- expo-linking@8.0.9:
- resolution:
- {
- integrity: sha512-a0UHhlVyfwIbn8b1PSFPoFiIDJeps2iEq109hVH3CHd0CMKuRxFfNio9Axe2BjXhiJCYWR4OV1iIyzY/GjiVkQ==,
- }
+ expo-linking@8.0.11:
+ resolution: {integrity: sha512-+VSaNL5om3kOp/SSKO5qe6cFgfSIWnnQDSbA7XLs3ECkYzXRquk5unxNS3pg7eK5kNUmQ4kgLI7MhTggAEUBLA==}
peerDependencies:
react: '*'
react-native: '*'
- expo-localization@17.0.7:
- resolution:
- {
- integrity: sha512-ACg1B0tJLNa+f8mZfAaNrMyNzrrzHAARVH1sHHvh+LolKdQpgSKX69Uroz1Llv4C71furpwBklVStbNcEwVVVA==,
- }
+ expo-localization@17.0.8:
+ resolution: {integrity: sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==}
peerDependencies:
expo: '*'
react: '*'
- expo-modules-autolinking@3.0.22:
- resolution:
- {
- integrity: sha512-Ej4SsZAnUUVFmbn6SoBso8K308mRKg8xgapdhP7v7IaSgfbexUoqxoiV31949HQQXuzmgvpkXCfp6Ex+mDW0EQ==,
- }
+ expo-modules-autolinking@3.0.24:
+ resolution: {integrity: sha512-TP+6HTwhL7orDvsz2VzauyQlXJcAWyU3ANsZ7JGL4DQu8XaZv/A41ZchbtAYLfozNA2Ya1Hzmhx65hXryBMjaQ==}
hasBin: true
- expo-modules-core@3.0.26:
- resolution:
- {
- integrity: sha512-WWjficXz32VmQ+xDoO+c0+jwDME0n/47wONrJkRvtm32H9W8n3MXkOMGemDl95HyPKYsaYKhjFGUOVOxIF3hcQ==,
- }
+ expo-modules-core@3.0.29:
+ resolution: {integrity: sha512-LzipcjGqk8gvkrOUf7O2mejNWugPkf3lmd9GkqL9WuNyeN2fRwU0Dn77e3ZUKI3k6sI+DNwjkq4Nu9fNN9WS7Q==}
peerDependencies:
react: '*'
react-native: '*'
- expo-navigation-bar@5.0.9:
- resolution:
- {
- integrity: sha512-xqry+MW12atuzYLtvck4fBCv0vqmo8q2Xap1ZeQRdjEm6m6Z35S6A09kRMY4NT7Y5Iaw+FI8YrUTNWSKvSXaDw==,
- }
+ expo-navigation-bar@5.0.10:
+ resolution: {integrity: sha512-r9rdLw8mY6GPMQmVVOY/r1NBBw74DZefXHF60HxhRsdNI2kjc1wLdfWfR2rk4JVdOvdMDujnGrc9HQmqM3n8Jg==}
peerDependencies:
expo: '*'
react: '*'
react-native: '*'
- expo-notifications@0.32.13:
- resolution:
- {
- integrity: sha512-PL0R1ulLVUgAswlXtRDKxBlcipNM3YA6+P5nB5JIhXbsjLJ7y+EKVaEhHhbaGzuK1QVsRQSJNm/4oISX+vsmFQ==,
- }
+ expo-notifications@0.32.16:
+ resolution: {integrity: sha512-QQD/UA6v7LgvwIJ+tS7tSvqJZkdp0nCSj9MxsDk/jU1GttYdK49/5L2LvE/4U0H7sNBz1NZAyhDZozg8xgBLXw==}
peerDependencies:
expo: '*'
react: '*'
react-native: '*'
- expo-server@1.0.4:
- resolution:
- {
- integrity: sha512-IN06r3oPxFh3plSXdvBL7dx0x6k+0/g0bgxJlNISs6qL5Z+gyPuWS750dpTzOeu37KyBG0RcyO9cXUKzjYgd4A==,
- }
- engines: { node: '>=20.16.0' }
+ expo-server@1.0.5:
+ resolution: {integrity: sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==}
+ engines: {node: '>=20.16.0'}
- expo-speech@14.0.7:
- resolution:
- {
- integrity: sha512-Ff/seq4tfj6AnGZj8Mj83EGnHj636f2mO30bPr3qQJzF9zn3ArakuUQTK8UrkVy0OS0E12z28d+9Fe+AgSUB0w==,
- }
+ expo-speech@14.0.8:
+ resolution: {integrity: sha512-UjBFCFv58nutlLw92L7kUS0ZjbOOfaTdiEv/HbjvMrT6BfldoOLLBZbaEcEhDdZK36NY/kass0Kzxk+co6vxSQ==}
peerDependencies:
expo: '*'
- expo-sqlite@16.0.9:
- resolution:
- {
- integrity: sha512-pMT52pTko539yZZQUZYfGiAYxQvpTUZIp/dwi2+IidSjPWB2wJi96ByaoNAzxmucarsYZN1F46C1Le6eT2VLkA==,
- }
+ expo-sqlite@16.0.10:
+ resolution: {integrity: sha512-tUOKxE9TpfneRG3eOfbNfhN9236SJ7IiUnP8gCqU7umd9DtgDGB/5PhYVVfl+U7KskgolgNoB9v9OZ9iwXN8Eg==}
peerDependencies:
expo: '*'
react: '*'
react-native: '*'
- expo-web-browser@15.0.9:
- resolution:
- {
- integrity: sha512-Dj8kNFO+oXsxqCDNlUT/GhOrJnm10kAElH++3RplLydogFm5jTzXYWDEeNIDmV+F+BzGYs+sIhxiBf7RyaxXZg==,
- }
+ expo-web-browser@15.0.10:
+ resolution: {integrity: sha512-fvDhW4bhmXAeWFNFiInmsGCK83PAqAcQaFyp/3pE/jbdKmFKoRCWr46uZGIfN4msLK/OODhaQ/+US7GSJNDHJg==}
peerDependencies:
expo: '*'
react-native: '*'
- expo@54.0.25:
- resolution:
- {
- integrity: sha512-+iSeBJfHRHzNPnHMZceEXhSGw4t5bNqFyd/5xMUoGfM+39rO7F72wxiLRpBKj0M6+0GQtMaEs+eTbcCrO7XyJQ==,
- }
+ expo@54.0.33:
+ resolution: {integrity: sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==}
hasBin: true
peerDependencies:
'@expo/dom-webview': '*'
@@ -4294,1233 +3452,893 @@ packages:
optional: true
exponential-backoff@3.1.3:
- resolution:
- {
- integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==,
- }
+ resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
fast-deep-equal@3.1.3:
- resolution:
- {
- integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==,
- }
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
fast-glob@3.3.3:
- resolution:
- {
- integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==,
- }
- engines: { node: '>=8.6.0' }
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
fast-json-stable-stringify@2.1.0:
- resolution:
- {
- integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==,
- }
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
fast-levenshtein@2.0.6:
- resolution:
- {
- integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==,
- }
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
fast-xml-parser@4.5.3:
- resolution:
- {
- integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==,
- }
+ resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==}
hasBin: true
- fastq@1.19.1:
- resolution:
- {
- integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==,
- }
+ fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
fb-watchman@2.0.2:
- resolution:
- {
- integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==,
- }
+ resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
file-entry-cache@6.0.1:
- resolution:
- {
- integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==,
- }
- engines: { node: ^10.12.0 || >=12.0.0 }
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
fill-range@7.1.1:
- resolution:
- {
- integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
filter-obj@1.1.0:
- resolution:
- {
- integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
+ engines: {node: '>=0.10.0'}
finalhandler@1.1.2:
- resolution:
- {
- integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
+ engines: {node: '>= 0.8'}
find-babel-config@2.1.2:
- resolution:
- {
- integrity: sha512-ZfZp1rQyp4gyuxqt1ZqjFGVeVBvmpURMqdIWXbPRfB97Bf6BzdK/xSIbylEINzQ0kB5tlDQfn9HkNXXWsqTqLg==,
- }
+ resolution: {integrity: sha512-ZfZp1rQyp4gyuxqt1ZqjFGVeVBvmpURMqdIWXbPRfB97Bf6BzdK/xSIbylEINzQ0kB5tlDQfn9HkNXXWsqTqLg==}
find-up@3.0.0:
- resolution:
- {
- integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
+ engines: {node: '>=6'}
find-up@4.1.0:
- resolution:
- {
- integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
find-up@5.0.0:
- resolution:
- {
- integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
find-up@7.0.0:
- resolution:
- {
- integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==}
+ engines: {node: '>=18'}
flat-cache@3.2.0:
- resolution:
- {
- integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==,
- }
- engines: { node: ^10.12.0 || >=12.0.0 }
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
flatted@3.3.3:
- resolution:
- {
- integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==,
- }
+ resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
flow-enums-runtime@0.0.6:
- resolution:
- {
- integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==,
- }
+ resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==}
fontfaceobserver@2.3.0:
- resolution:
- {
- integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==,
- }
+ resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==}
for-each@0.3.5:
- resolution:
- {
- integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==,
- }
- engines: { node: '>= 0.4' }
-
- foreground-child@3.3.1:
- resolution:
- {
- integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
freeport-async@2.0.0:
- resolution:
- {
- integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==}
+ engines: {node: '>=8'}
fresh@0.5.2:
- resolution:
- {
- integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fs-constants@1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
fs-extra@8.1.0:
- resolution:
- {
- integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==,
- }
- engines: { node: '>=6 <7 || >=8' }
+ resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
+ engines: {node: '>=6 <7 || >=8'}
fs.realpath@1.0.0:
- resolution:
- {
- integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==,
- }
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
fsevents@2.3.3:
- resolution:
- {
- integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==,
- }
- engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
function-bind@1.1.2:
- resolution:
- {
- integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==,
- }
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
function.prototype.name@1.1.8:
- resolution:
- {
- integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
+ engines: {node: '>= 0.4'}
functions-have-names@1.2.3:
- resolution:
- {
- integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==,
- }
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
generator-function@2.0.1:
- resolution:
- {
- integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
+ engines: {node: '>= 0.4'}
gensync@1.0.0-beta.2:
- resolution:
- {
- integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
- }
- engines: { node: '>=6.9.0' }
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
get-caller-file@2.0.5:
- resolution:
- {
- integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==,
- }
- engines: { node: 6.* || 8.* || >= 10.* }
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
get-intrinsic@1.3.0:
- resolution:
- {
- integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
get-package-type@0.1.0:
- resolution:
- {
- integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==,
- }
- engines: { node: '>=8.0.0' }
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
get-proto@1.0.1:
- resolution:
- {
- integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
get-stream@6.0.1:
- resolution:
- {
- integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
get-symbol-description@1.1.0:
- resolution:
- {
- integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
+ engines: {node: '>= 0.4'}
getenv@2.0.0:
- resolution:
- {
- integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==}
+ engines: {node: '>=6'}
+
+ github-from-package@0.0.0:
+ resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
glob-parent@5.1.2:
- resolution:
- {
- integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
glob-parent@6.0.2:
- resolution:
- {
- integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==,
- }
- engines: { node: '>=10.13.0' }
-
- glob@10.5.0:
- resolution:
- {
- integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==,
- }
- hasBin: true
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@13.0.5:
+ resolution: {integrity: sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw==}
+ engines: {node: 20 || >=22}
glob@7.2.3:
- resolution:
- {
- integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==,
- }
- deprecated: Glob versions prior to v9 are no longer supported
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@9.3.5:
- resolution:
- {
- integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
global-dirs@0.1.1:
- resolution:
- {
- integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
+ engines: {node: '>=4'}
globals@13.24.0:
- resolution:
- {
- integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
globalthis@1.0.4:
- resolution:
- {
- integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
globby@11.1.0:
- resolution:
- {
- integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
gopd@1.2.0:
- resolution:
- {
- integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
graceful-fs@4.2.11:
- resolution:
- {
- integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==,
- }
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
graphemer@1.4.0:
- resolution:
- {
- integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==,
- }
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
has-bigints@1.1.0:
- resolution:
- {
- integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
+ engines: {node: '>= 0.4'}
has-flag@3.0.0:
- resolution:
- {
- integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
has-flag@4.0.0:
- resolution:
- {
- integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
has-property-descriptors@1.0.2:
- resolution:
- {
- integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==,
- }
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
has-proto@1.2.0:
- resolution:
- {
- integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
+ engines: {node: '>= 0.4'}
has-symbols@1.1.0:
- resolution:
- {
- integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
has-tostringtag@1.0.2:
- resolution:
- {
- integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
hasown@2.0.2:
- resolution:
- {
- integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ hermes-eslint@0.33.3:
+ resolution: {integrity: sha512-eGY0l6T5U9LDdC+uN88NrSOrvPPtXGPxN7EaD38hytWuBEVXypq0eQ1SNVsnQPBZLWi+b1jkF4F5aVtTCQC6wg==}
+
+ hermes-estree@0.25.1:
+ resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==}
hermes-estree@0.29.1:
- resolution:
- {
- integrity: sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==,
- }
+ resolution: {integrity: sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==}
hermes-estree@0.32.0:
- resolution:
- {
- integrity: sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==,
- }
+ resolution: {integrity: sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==}
+
+ hermes-estree@0.33.3:
+ resolution: {integrity: sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==}
+
+ hermes-parser@0.25.1:
+ resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
hermes-parser@0.29.1:
- resolution:
- {
- integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==,
- }
+ resolution: {integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==}
hermes-parser@0.32.0:
- resolution:
- {
- integrity: sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==,
- }
+ resolution: {integrity: sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==}
+
+ hermes-parser@0.33.3:
+ resolution: {integrity: sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==}
hoist-non-react-statics@3.3.2:
- resolution:
- {
- integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==,
- }
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
hosted-git-info@7.0.2:
- resolution:
- {
- integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
-
- htmlparser2@10.0.0:
- resolution:
- {
- integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==,
- }
+ resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
+ engines: {node: ^16.14.0 || >=18.0.0}
+
+ html-escaper@2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+
+ htmlparser2@10.1.0:
+ resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==}
htmlparser2@8.0.2:
- resolution:
- {
- integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==,
- }
-
- http-errors@2.0.0:
- resolution:
- {
- integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
+
+ http-errors@2.0.1:
+ resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+ engines: {node: '>= 0.8'}
+
+ http-proxy-agent@7.0.2:
+ resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
https-proxy-agent@7.0.6:
- resolution:
- {
- integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==,
- }
- engines: { node: '>= 14' }
+ resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
+ engines: {node: '>= 14'}
human-signals@2.1.0:
- resolution:
- {
- integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==,
- }
- engines: { node: '>=10.17.0' }
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
husky@7.0.4:
- resolution:
- {
- integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==}
+ engines: {node: '>=12'}
hasBin: true
- i18n-js@4.5.1:
- resolution:
- {
- integrity: sha512-n7jojFj1WC0tztgr0I8jqTXuIlY1xNzXnC3mjKX/YjJhimdM+jXM8vOmn9d3xQFNC6qDHJ4ovhdrGXrRXLIGkA==,
- }
+ i18n-js@4.5.2:
+ resolution: {integrity: sha512-QetDvWXkyX+FTbidPn7gEyGtO5l0cB5nj/MNfnXczrUWCGaF9p8pzoh5lTStXww3KZj2D9s5xXNH6Z5gKhd6iQ==}
iconv-lite@0.4.24:
- resolution:
- {
- integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
iconv-lite@0.6.3:
- resolution:
- {
- integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ iconv-lite@0.7.2:
+ resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==}
+ engines: {node: '>=0.10.0'}
ieee754@1.2.1:
- resolution:
- {
- integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==,
- }
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
ignore@5.3.2:
- resolution:
- {
- integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==,
- }
- engines: { node: '>= 4' }
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ ignore@7.0.5:
+ resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
+ engines: {node: '>= 4'}
image-size@1.2.1:
- resolution:
- {
- integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==,
- }
- engines: { node: '>=16.x' }
+ resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==}
+ engines: {node: '>=16.x'}
hasBin: true
import-fresh@3.3.1:
- resolution:
- {
- integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+
+ import-local@3.2.0:
+ resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
+ engines: {node: '>=8'}
+ hasBin: true
imurmurhash@0.1.4:
- resolution:
- {
- integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==,
- }
- engines: { node: '>=0.8.19' }
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
indent-string@4.0.0:
- resolution:
- {
- integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
inflight@1.0.6:
- resolution:
- {
- integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==,
- }
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.4:
- resolution:
- {
- integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==,
- }
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
ini@1.3.8:
- resolution:
- {
- integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==,
- }
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
internal-slot@1.1.0:
- resolution:
- {
- integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
+ engines: {node: '>= 0.4'}
invariant@2.2.4:
- resolution:
- {
- integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==,
- }
+ resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
is-arguments@1.2.0:
- resolution:
- {
- integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
+ engines: {node: '>= 0.4'}
is-array-buffer@3.0.5:
- resolution:
- {
- integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
+ engines: {node: '>= 0.4'}
is-arrayish@0.2.1:
- resolution:
- {
- integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==,
- }
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
is-arrayish@0.3.4:
- resolution:
- {
- integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==,
- }
+ resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}
is-async-function@2.1.1:
- resolution:
- {
- integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
+ engines: {node: '>= 0.4'}
is-bigint@1.1.0:
- resolution:
- {
- integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
+ engines: {node: '>= 0.4'}
is-boolean-object@1.2.2:
- resolution:
- {
- integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
+ engines: {node: '>= 0.4'}
is-callable@1.2.7:
- resolution:
- {
- integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
is-core-module@2.16.1:
- resolution:
- {
- integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
is-data-view@1.0.2:
- resolution:
- {
- integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
+ engines: {node: '>= 0.4'}
is-date-object@1.1.0:
- resolution:
- {
- integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
+ engines: {node: '>= 0.4'}
is-docker@2.2.1:
- resolution:
- {
- integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true
is-extglob@2.1.1:
- resolution:
- {
- integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
is-finalizationregistry@1.1.1:
- resolution:
- {
- integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
+ engines: {node: '>= 0.4'}
is-fullwidth-code-point@2.0.0:
- resolution:
- {
- integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==}
+ engines: {node: '>=4'}
is-fullwidth-code-point@3.0.0:
- resolution:
- {
- integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
is-fullwidth-code-point@4.0.0:
- resolution:
- {
- integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
+ engines: {node: '>=12'}
+
+ is-generator-fn@2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
is-generator-function@1.1.2:
- resolution:
- {
- integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
+ engines: {node: '>= 0.4'}
is-glob@4.0.3:
- resolution:
- {
- integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
is-interactive@1.0.0:
- resolution:
- {
- integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
is-map@2.0.3:
- resolution:
- {
- integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
is-nan@1.3.2:
- resolution:
- {
- integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==}
+ engines: {node: '>= 0.4'}
is-negative-zero@2.0.3:
- resolution:
- {
- integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
is-number-object@1.1.1:
- resolution:
- {
- integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
+ engines: {node: '>= 0.4'}
is-number@7.0.0:
- resolution:
- {
- integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
- }
- engines: { node: '>=0.12.0' }
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
is-path-inside@3.0.3:
- resolution:
- {
- integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
is-plain-object@5.0.0:
- resolution:
- {
- integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
+ engines: {node: '>=0.10.0'}
is-regex@1.2.1:
- resolution:
- {
- integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
+ engines: {node: '>= 0.4'}
is-set@2.0.3:
- resolution:
- {
- integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
is-shared-array-buffer@1.0.4:
- resolution:
- {
- integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
+ engines: {node: '>= 0.4'}
is-stream@2.0.1:
- resolution:
- {
- integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
is-string@1.1.1:
- resolution:
- {
- integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
+ engines: {node: '>= 0.4'}
is-symbol@1.1.1:
- resolution:
- {
- integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
+ engines: {node: '>= 0.4'}
is-typed-array@1.1.15:
- resolution:
- {
- integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ engines: {node: '>= 0.4'}
is-unicode-supported@0.1.0:
- resolution:
- {
- integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
is-weakmap@2.0.2:
- resolution:
- {
- integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
is-weakref@1.1.1:
- resolution:
- {
- integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
+ engines: {node: '>= 0.4'}
is-weakset@2.0.4:
- resolution:
- {
- integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
+ engines: {node: '>= 0.4'}
is-wsl@1.1.0:
- resolution:
- {
- integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==}
+ engines: {node: '>=4'}
is-wsl@2.2.0:
- resolution:
- {
- integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+
+ is-wsl@3.1.1:
+ resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==}
+ engines: {node: '>=16'}
isarray@2.0.5:
- resolution:
- {
- integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==,
- }
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
isexe@2.0.0:
- resolution:
- {
- integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==,
- }
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
istanbul-lib-coverage@3.2.2:
- resolution:
- {
- integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
+ engines: {node: '>=8'}
istanbul-lib-instrument@5.2.1:
- resolution:
- {
- integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
+ engines: {node: '>=8'}
+
+ istanbul-lib-instrument@6.0.3:
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-report@3.0.1:
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-source-maps@4.0.1:
+ resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
+ engines: {node: '>=10'}
+
+ istanbul-reports@3.2.0:
+ resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==}
+ engines: {node: '>=8'}
iterator.prototype@1.1.5:
- resolution:
- {
- integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==,
- }
- engines: { node: '>= 0.4' }
-
- jackspeak@3.4.3:
- resolution:
- {
- integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==,
- }
+ resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
+ engines: {node: '>= 0.4'}
+
+ jest-changed-files@29.7.0:
+ resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-circus@29.7.0:
+ resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-cli@29.7.0:
+ resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+
+ jest-config@29.7.0:
+ resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+
+ jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-docblock@29.7.0:
+ resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-each@29.7.0:
+ resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-environment-node@29.7.0:
- resolution:
- {
- integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-get-type@29.6.3:
- resolution:
- {
- integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-haste-map@29.7.0:
- resolution:
- {
- integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-leak-detector@29.7.0:
+ resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-matcher-utils@29.7.0:
+ resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-message-util@29.7.0:
- resolution:
- {
- integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-mock@29.7.0:
- resolution:
- {
- integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-pnp-resolver@1.2.3:
+ resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
jest-regex-util@29.6.3:
- resolution:
- {
- integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-resolve-dependencies@29.7.0:
+ resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-resolve@29.7.0:
+ resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-runner@29.7.0:
+ resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-runtime@29.7.0:
+ resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-snapshot@29.7.0:
+ resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-util@29.7.0:
- resolution:
- {
- integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-validate@29.7.0:
- resolution:
- {
- integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest-watcher@29.7.0:
+ resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
jest-worker@29.7.0:
- resolution:
- {
- integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ jest@29.7.0:
+ resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
jimp-compact@0.16.1:
- resolution:
- {
- integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==,
- }
+ resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==}
+
+ jiti@2.6.1:
+ resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
+ hasBin: true
joi@17.13.3:
- resolution:
- {
- integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==,
- }
+ resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
+
+ js-md4@0.3.2:
+ resolution: {integrity: sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==}
js-tokens@4.0.0:
- resolution:
- {
- integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
- }
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
js-yaml@3.14.2:
- resolution:
- {
- integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==,
- }
+ resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==}
hasBin: true
js-yaml@4.1.1:
- resolution:
- {
- integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==,
- }
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
hasBin: true
+ jsbi@4.3.2:
+ resolution: {integrity: sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew==}
+
jsc-safe-url@0.2.4:
- resolution:
- {
- integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==,
- }
+ resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==}
jsesc@3.1.0:
- resolution:
- {
- integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
hasBin: true
json-buffer@3.0.1:
- resolution:
- {
- integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==,
- }
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
json-parse-even-better-errors@2.3.1:
- resolution:
- {
- integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==,
- }
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
json-schema-traverse@0.4.1:
- resolution:
- {
- integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==,
- }
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
json-stable-stringify-without-jsonify@1.0.1:
- resolution:
- {
- integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==,
- }
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
json5@2.2.3:
- resolution:
- {
- integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
hasBin: true
jsonfile@4.0.0:
- resolution:
- {
- integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==,
- }
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+
+ jsonwebtoken@9.0.3:
+ resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==}
+ engines: {node: '>=12', npm: '>=6'}
jsx-ast-utils@3.3.5:
- resolution:
- {
- integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==,
- }
- engines: { node: '>=4.0' }
+ resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
+ engines: {node: '>=4.0'}
+
+ jwa@2.0.1:
+ resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==}
+
+ jws@4.0.1:
+ resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==}
keyv@4.5.4:
- resolution:
- {
- integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==,
- }
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
kleur@3.0.3:
- resolution:
- {
- integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
lan-network@0.1.7:
- resolution:
- {
- integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==,
- }
+ resolution: {integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==}
hasBin: true
- launch-editor@2.12.0:
- resolution:
- {
- integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==,
- }
+ launch-editor@2.13.0:
+ resolution: {integrity: sha512-u+9asUHMJ99lA15VRMXw5XKfySFR9dGXwgsgS14YTbUq3GITP58mIM32At90P5fZ+MUId5Yw+IwI/yKub7jnCQ==}
leven@3.1.0:
- resolution:
- {
- integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
levn@0.4.1:
- resolution:
- {
- integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
lighthouse-logger@1.4.2:
- resolution:
- {
- integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==,
- }
-
- lightningcss-android-arm64@1.30.2:
- resolution:
- {
- integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==,
- }
- engines: { node: '>= 12.0.0' }
+ resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==}
+
+ lightningcss-android-arm64@1.31.1:
+ resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==}
+ engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [android]
- lightningcss-darwin-arm64@1.30.2:
- resolution:
- {
- integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-darwin-arm64@1.31.1:
+ resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==}
+ engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
- lightningcss-darwin-x64@1.30.2:
- resolution:
- {
- integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-darwin-x64@1.31.1:
+ resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==}
+ engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
- lightningcss-freebsd-x64@1.30.2:
- resolution:
- {
- integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-freebsd-x64@1.31.1:
+ resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==}
+ engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
- lightningcss-linux-arm-gnueabihf@1.30.2:
- resolution:
- {
- integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-linux-arm-gnueabihf@1.31.1:
+ resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==}
+ engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
- lightningcss-linux-arm64-gnu@1.30.2:
- resolution:
- {
- integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-linux-arm64-gnu@1.31.1:
+ resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==}
+ engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- lightningcss-linux-arm64-musl@1.30.2:
- resolution:
- {
- integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-linux-arm64-musl@1.31.1:
+ resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==}
+ engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
- lightningcss-linux-x64-gnu@1.30.2:
- resolution:
- {
- integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-linux-x64-gnu@1.31.1:
+ resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==}
+ engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- lightningcss-linux-x64-musl@1.30.2:
- resolution:
- {
- integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-linux-x64-musl@1.31.1:
+ resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==}
+ engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
- lightningcss-win32-arm64-msvc@1.30.2:
- resolution:
- {
- integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-win32-arm64-msvc@1.31.1:
+ resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==}
+ engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
- lightningcss-win32-x64-msvc@1.30.2:
- resolution:
- {
- integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss-win32-x64-msvc@1.31.1:
+ resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==}
+ engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
- lightningcss@1.30.2:
- resolution:
- {
- integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==,
- }
- engines: { node: '>= 12.0.0' }
+ lightningcss@1.31.1:
+ resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==}
+ engines: {node: '>= 12.0.0'}
lilconfig@2.0.5:
- resolution:
- {
- integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==}
+ engines: {node: '>=10'}
lines-and-columns@1.2.4:
- resolution:
- {
- integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==,
- }
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
lint-staged@12.5.0:
- resolution:
- {
- integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+ resolution: {integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true
listr2@4.0.5:
- resolution:
- {
- integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==}
+ engines: {node: '>=12'}
peerDependencies:
enquirer: '>= 2.3.0 < 3'
peerDependenciesMeta:
@@ -5528,121 +4346,88 @@ packages:
optional: true
locate-path@3.0.0:
- resolution:
- {
- integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
+ engines: {node: '>=6'}
locate-path@5.0.0:
- resolution:
- {
- integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
locate-path@6.0.0:
- resolution:
- {
- integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
locate-path@7.2.0:
- resolution:
- {
- integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
-
- lodash-es@4.17.21:
- resolution:
- {
- integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==,
- }
+ resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ lodash-es@4.17.23:
+ resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==}
lodash.debounce@4.0.8:
- resolution:
- {
- integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==,
- }
+ resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+
+ lodash.includes@4.3.0:
+ resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
+
+ lodash.isboolean@3.0.3:
+ resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
+
+ lodash.isinteger@4.0.4:
+ resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
+
+ lodash.isnumber@3.0.3:
+ resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
+
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
+ lodash.isstring@4.0.1:
+ resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
lodash.merge@4.6.2:
- resolution:
- {
- integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==,
- }
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ lodash.once@4.1.1:
+ resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
lodash.throttle@4.1.1:
- resolution:
- {
- integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==,
- }
+ resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
- lodash@4.17.21:
- resolution:
- {
- integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==,
- }
+ lodash@4.17.23:
+ resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
log-symbols@2.2.0:
- resolution:
- {
- integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==}
+ engines: {node: '>=4'}
log-symbols@4.1.0:
- resolution:
- {
- integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
log-update@4.0.0:
- resolution:
- {
- integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
+ engines: {node: '>=10'}
logkitty@0.7.1:
- resolution:
- {
- integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==,
- }
+ resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==}
hasBin: true
long@5.3.2:
- resolution:
- {
- integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==,
- }
+ resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
loose-envify@1.4.0:
- resolution:
- {
- integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==,
- }
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
lottie-ios@3.2.3:
- resolution:
- {
- integrity: sha512-mubYMN6+1HXa8z3EJKBvNBkl4UoVM4McjESeB2PgvRMSngmJtC5yUMRdhbbrIAn5Liu3hFGao/14s5hQIgtkRQ==,
- }
+ resolution: {integrity: sha512-mubYMN6+1HXa8z3EJKBvNBkl4UoVM4McjESeB2PgvRMSngmJtC5yUMRdhbbrIAn5Liu3hFGao/14s5hQIgtkRQ==}
lottie-ios@3.5.0:
- resolution:
- {
- integrity: sha512-DM6BYLhHTzvUsK89AjY+K9RwVGkOBwbH/iytjyZUmFbXz8DVsoPEyy+c7L5NZmVouZHvLnOQp6NaYTkwMo+iOg==,
- }
+ resolution: {integrity: sha512-DM6BYLhHTzvUsK89AjY+K9RwVGkOBwbH/iytjyZUmFbXz8DVsoPEyy+c7L5NZmVouZHvLnOQp6NaYTkwMo+iOg==}
lottie-react-native@5.1.6:
- resolution:
- {
- integrity: sha512-vhdeZstXMfuVKwnddYWjJgQ/1whGL58IJEJu/iSf0XQ5gAb4pp/+vy91mdYQLezlb8Aw4Vu3fKnqErJL2hwchg==,
- }
+ resolution: {integrity: sha512-vhdeZstXMfuVKwnddYWjJgQ/1whGL58IJEJu/iSf0XQ5gAb4pp/+vy91mdYQLezlb8Aw4Vu3fKnqErJL2hwchg==}
peerDependencies:
lottie-ios: ^3.4.0
react: '*'
@@ -5653,1108 +4438,635 @@ packages:
optional: true
lru-cache@10.4.3:
- resolution:
- {
- integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==,
- }
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+ lru-cache@11.2.6:
+ resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==}
+ engines: {node: 20 || >=22}
lru-cache@5.1.1:
- resolution:
- {
- integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==,
- }
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
- make-plural@7.4.0:
- resolution:
- {
- integrity: sha512-4/gC9KVNTV6pvYg2gFeQYTW3mWaoJt7WZE5vrp1KnQDgW92JtYZnzmZT81oj/dUTqAIu0ufI2x3dkgu3bB1tYg==,
- }
+ make-dir@4.0.0:
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
+ engines: {node: '>=10'}
+
+ make-plural@7.5.0:
+ resolution: {integrity: sha512-0booA+aVYyVFoR67JBHdfVk0U08HmrBH2FrtmBqBa+NldlqXv/G2Z9VQuQq6Wgp2jDWdybEWGfBkk1cq5264WA==}
makeerror@1.0.12:
- resolution:
- {
- integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==,
- }
+ resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
marky@1.3.0:
- resolution:
- {
- integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==,
- }
+ resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==}
math-intrinsics@1.1.0:
- resolution:
- {
- integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
media-typer@0.3.0:
- resolution:
- {
- integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
memoize-one@5.2.1:
- resolution:
- {
- integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==,
- }
+ resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
merge-stream@2.0.0:
- resolution:
- {
- integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==,
- }
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
merge2@1.4.1:
- resolution:
- {
- integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==,
- }
- engines: { node: '>= 8' }
-
- metro-babel-transformer@0.83.2:
- resolution:
- {
- integrity: sha512-rirY1QMFlA1uxH3ZiNauBninwTioOgwChnRdDcbB4tgRZ+bGX9DiXoh9QdpppiaVKXdJsII932OwWXGGV4+Nlw==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
metro-babel-transformer@0.83.3:
- resolution:
- {
- integrity: sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-cache-key@0.83.2:
- resolution:
- {
- integrity: sha512-3EMG/GkGKYoTaf5RqguGLSWRqGTwO7NQ0qXKmNBjr0y6qD9s3VBXYlwB+MszGtmOKsqE9q3FPrE5Nd9Ipv7rZw==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==}
+ engines: {node: '>=20.19.4'}
metro-cache-key@0.83.3:
- resolution:
- {
- integrity: sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-cache@0.83.2:
- resolution:
- {
- integrity: sha512-Z43IodutUZeIS7OTH+yQFjc59QlFJ6s5OvM8p2AP9alr0+F8UKr8ADzFzoGKoHefZSKGa4bJx7MZJLF6GwPDHQ==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==}
+ engines: {node: '>=20.19.4'}
metro-cache@0.83.3:
- resolution:
- {
- integrity: sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-config@0.83.2:
- resolution:
- {
- integrity: sha512-1FjCcdBe3e3D08gSSiU9u3Vtxd7alGH3x/DNFqWDFf5NouX4kLgbVloDDClr1UrLz62c0fHh2Vfr9ecmrOZp+g==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==}
+ engines: {node: '>=20.19.4'}
metro-config@0.83.3:
- resolution:
- {
- integrity: sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-core@0.83.2:
- resolution:
- {
- integrity: sha512-8DRb0O82Br0IW77cNgKMLYWUkx48lWxUkvNUxVISyMkcNwE/9ywf1MYQUE88HaKwSrqne6kFgCSA/UWZoUT0Iw==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==}
+ engines: {node: '>=20.19.4'}
metro-core@0.83.3:
- resolution:
- {
- integrity: sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-file-map@0.83.2:
- resolution:
- {
- integrity: sha512-cMSWnEqZrp/dzZIEd7DEDdk72PXz6w5NOKriJoDN9p1TDQ5nAYrY2lHi8d6mwbcGLoSlWmpPyny9HZYFfPWcGQ==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==}
+ engines: {node: '>=20.19.4'}
metro-file-map@0.83.3:
- resolution:
- {
- integrity: sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-minify-terser@0.83.2:
- resolution:
- {
- integrity: sha512-zvIxnh7U0JQ7vT4quasKsijId3dOAWgq+ip2jF/8TMrPUqQabGrs04L2dd0haQJ+PA+d4VvK/bPOY8X/vL2PWw==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==}
+ engines: {node: '>=20.19.4'}
metro-minify-terser@0.83.3:
- resolution:
- {
- integrity: sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-resolver@0.83.2:
- resolution:
- {
- integrity: sha512-Yf5mjyuiRE/Y+KvqfsZxrbHDA15NZxyfg8pIk0qg47LfAJhpMVEX+36e6ZRBq7KVBqy6VDX5Sq55iHGM4xSm7Q==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==}
+ engines: {node: '>=20.19.4'}
metro-resolver@0.83.3:
- resolution:
- {
- integrity: sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-runtime@0.83.2:
- resolution:
- {
- integrity: sha512-nnsPtgRvFbNKwemqs0FuyFDzXLl+ezuFsUXDbX8o0SXOfsOPijqiQrf3kuafO1Zx1aUWf4NOrKJMAQP5EEHg9A==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==}
+ engines: {node: '>=20.19.4'}
metro-runtime@0.83.3:
- resolution:
- {
- integrity: sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-source-map@0.83.2:
- resolution:
- {
- integrity: sha512-5FL/6BSQvshIKjXOennt9upFngq2lFvDakZn5LfauIVq8+L4sxXewIlSTcxAtzbtjAIaXeOSVMtCJ5DdfCt9AA==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==}
+ engines: {node: '>=20.19.4'}
metro-source-map@0.83.3:
- resolution:
- {
- integrity: sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-symbolicate@0.83.2:
- resolution:
- {
- integrity: sha512-KoU9BLwxxED6n33KYuQQuc5bXkIxF3fSwlc3ouxrrdLWwhu64muYZNQrukkWzhVKRNFIXW7X2iM8JXpi2heIPw==,
- }
- engines: { node: '>=20.19.4' }
- hasBin: true
+ resolution: {integrity: sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==}
+ engines: {node: '>=20.19.4'}
metro-symbolicate@0.83.3:
- resolution:
- {
- integrity: sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==}
+ engines: {node: '>=20.19.4'}
hasBin: true
- metro-transform-plugins@0.83.2:
- resolution:
- {
- integrity: sha512-5WlW25WKPkiJk2yA9d8bMuZrgW7vfA4f4MBb9ZeHbTB3eIAoNN8vS8NENgG/X/90vpTB06X66OBvxhT3nHwP6A==,
- }
- engines: { node: '>=20.19.4' }
-
metro-transform-plugins@0.83.3:
- resolution:
- {
- integrity: sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==,
- }
- engines: { node: '>=20.19.4' }
-
- metro-transform-worker@0.83.2:
- resolution:
- {
- integrity: sha512-G5DsIg+cMZ2KNfrdLnWMvtppb3+Rp1GMyj7Bvd9GgYc/8gRmvq1XVEF9XuO87Shhb03kFhGqMTgZerz3hZ1v4Q==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==}
+ engines: {node: '>=20.19.4'}
metro-transform-worker@0.83.3:
- resolution:
- {
- integrity: sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==,
- }
- engines: { node: '>=20.19.4' }
-
- metro@0.83.2:
- resolution:
- {
- integrity: sha512-HQgs9H1FyVbRptNSMy/ImchTTE5vS2MSqLoOo7hbDoBq6hPPZokwJvBMwrYSxdjQZmLXz2JFZtdvS+ZfgTc9yw==,
- }
- engines: { node: '>=20.19.4' }
- hasBin: true
+ resolution: {integrity: sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==}
+ engines: {node: '>=20.19.4'}
metro@0.83.3:
- resolution:
- {
- integrity: sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==}
+ engines: {node: '>=20.19.4'}
hasBin: true
micromatch@4.0.8:
- resolution:
- {
- integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
- }
- engines: { node: '>=8.6' }
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
mime-db@1.52.0:
- resolution:
- {
- integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
mime-db@1.54.0:
- resolution:
- {
- integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
mime-types@2.1.35:
- resolution:
- {
- integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
mime@1.6.0:
- resolution:
- {
- integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
hasBin: true
mime@2.6.0:
- resolution:
- {
- integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==,
- }
- engines: { node: '>=4.0.0' }
+ resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
+ engines: {node: '>=4.0.0'}
hasBin: true
mimic-fn@1.2.0:
- resolution:
- {
- integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
+ engines: {node: '>=4'}
mimic-fn@2.1.0:
- resolution:
- {
- integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ mimic-response@3.1.0:
+ resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+ engines: {node: '>=10'}
+
+ minimatch@10.2.1:
+ resolution: {integrity: sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==}
+ engines: {node: 20 || >=22}
minimatch@3.1.2:
- resolution:
- {
- integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==,
- }
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
minimatch@8.0.4:
- resolution:
- {
- integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==}
+ engines: {node: '>=16 || 14 >=14.17'}
minimatch@9.0.5:
- resolution:
- {
- integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
minimist@1.2.8:
- resolution:
- {
- integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==,
- }
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
minipass@4.2.8:
- resolution:
- {
- integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
+ engines: {node: '>=8'}
minipass@7.1.2:
- resolution:
- {
- integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
minizlib@3.1.0:
- resolution:
- {
- integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==,
- }
- engines: { node: '>= 18' }
+ resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==}
+ engines: {node: '>= 18'}
+
+ mkdirp-classic@0.5.3:
+ resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
mkdirp@1.0.4:
- resolution:
- {
- integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
hasBin: true
ms@2.0.0:
- resolution:
- {
- integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==,
- }
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
ms@2.1.3:
- resolution:
- {
- integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==,
- }
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ mssql@11.0.1:
+ resolution: {integrity: sha512-KlGNsugoT90enKlR8/G36H0kTxPthDhmtNUCwEHvgRza5Cjpjoj+P2X6eMpFUDN7pFrJZsKadL4x990G8RBE1w==}
+ engines: {node: '>=18'}
+ hasBin: true
mz@2.7.0:
- resolution:
- {
- integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==,
- }
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
nanoid@3.3.11:
- resolution:
- {
- integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==,
- }
- engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ napi-build-utils@2.0.0:
+ resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
+
+ native-duplexpair@1.0.0:
+ resolution: {integrity: sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==}
+
natural-compare@1.4.0:
- resolution:
- {
- integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==,
- }
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
negotiator@0.6.3:
- resolution:
- {
- integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
negotiator@0.6.4:
- resolution:
- {
- integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
+ engines: {node: '>= 0.6'}
nested-error-stacks@2.0.1:
- resolution:
- {
- integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==,
- }
+ resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==}
nocache@3.0.4:
- resolution:
- {
- integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==,
- }
- engines: { node: '>=12.0.0' }
-
- node-forge@1.3.2:
- resolution:
- {
- integrity: sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==,
- }
- engines: { node: '>= 6.13.0' }
+ resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==}
+ engines: {node: '>=12.0.0'}
+
+ node-abi@3.87.0:
+ resolution: {integrity: sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==}
+ engines: {node: '>=10'}
+
+ node-exports-info@1.6.0:
+ resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==}
+ engines: {node: '>= 0.4'}
+
+ node-forge@1.3.3:
+ resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==}
+ engines: {node: '>= 6.13.0'}
node-int64@0.4.0:
- resolution:
- {
- integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==,
- }
+ resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
node-releases@2.0.27:
- resolution:
- {
- integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==,
- }
+ resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
node-stream-zip@1.15.0:
- resolution:
- {
- integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==,
- }
- engines: { node: '>=0.12.0' }
+ resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==}
+ engines: {node: '>=0.12.0'}
normalize-path@3.0.0:
- resolution:
- {
- integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
npm-package-arg@11.0.3:
- resolution:
- {
- integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==,
- }
- engines: { node: ^16.14.0 || >=18.0.0 }
+ resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==}
+ engines: {node: ^16.14.0 || >=18.0.0}
npm-run-path@4.0.1:
- resolution:
- {
- integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
nth-check@2.1.1:
- resolution:
- {
- integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==,
- }
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
nullthrows@1.1.1:
- resolution:
- {
- integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==,
- }
-
- ob1@0.83.2:
- resolution:
- {
- integrity: sha512-XlK3w4M+dwd1g1gvHzVbxiXEbUllRONEgcF2uEO0zm4nxa0eKlh41c6N65q1xbiDOeKKda1tvNOAD33fNjyvCg==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
ob1@0.83.3:
- resolution:
- {
- integrity: sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==,
- }
- engines: { node: '>=20.19.4' }
+ resolution: {integrity: sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==}
+ engines: {node: '>=20.19.4'}
object-assign@4.1.1:
- resolution:
- {
- integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
object-inspect@1.13.4:
- resolution:
- {
- integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
object-is@1.1.6:
- resolution:
- {
- integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
+ engines: {node: '>= 0.4'}
object-keys@1.1.1:
- resolution:
- {
- integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
object.assign@4.1.7:
- resolution:
- {
- integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
+ engines: {node: '>= 0.4'}
object.entries@1.1.9:
- resolution:
- {
- integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
+ engines: {node: '>= 0.4'}
object.fromentries@2.0.8:
- resolution:
- {
- integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
+ engines: {node: '>= 0.4'}
object.values@1.2.1:
- resolution:
- {
- integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
+ engines: {node: '>= 0.4'}
on-finished@2.3.0:
- resolution:
- {
- integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+ engines: {node: '>= 0.8'}
on-finished@2.4.1:
- resolution:
- {
- integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
on-headers@1.1.0:
- resolution:
- {
- integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==}
+ engines: {node: '>= 0.8'}
once@1.4.0:
- resolution:
- {
- integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==,
- }
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
onetime@2.0.1:
- resolution:
- {
- integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==}
+ engines: {node: '>=4'}
onetime@5.1.2:
- resolution:
- {
- integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ open@10.2.0:
+ resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
+ engines: {node: '>=18'}
open@6.4.0:
- resolution:
- {
- integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==}
+ engines: {node: '>=8'}
open@7.4.2:
- resolution:
- {
- integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==}
+ engines: {node: '>=8'}
open@8.4.2:
- resolution:
- {
- integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+ engines: {node: '>=12'}
optionator@0.9.4:
- resolution:
- {
- integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
ora@3.4.0:
- resolution:
- {
- integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==}
+ engines: {node: '>=6'}
ora@5.4.1:
- resolution:
- {
- integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
own-keys@1.0.1:
- resolution:
- {
- integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
+ engines: {node: '>= 0.4'}
p-limit@2.3.0:
- resolution:
- {
- integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
p-limit@3.1.0:
- resolution:
- {
- integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
p-limit@4.0.0:
- resolution:
- {
- integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+ resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
p-locate@3.0.0:
- resolution:
- {
- integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
+ engines: {node: '>=6'}
p-locate@4.1.0:
- resolution:
- {
- integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
p-locate@5.0.0:
- resolution:
- {
- integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
p-locate@6.0.0:
- resolution:
- {
- integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+ resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
p-map@4.0.0:
- resolution:
- {
- integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
p-try@2.2.0:
- resolution:
- {
- integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==,
- }
- engines: { node: '>=6' }
-
- package-json-from-dist@1.0.1:
- resolution:
- {
- integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==,
- }
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
parent-module@1.0.1:
- resolution:
- {
- integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
parse-json@5.2.0:
- resolution:
- {
- integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
parse-png@2.1.0:
- resolution:
- {
- integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==}
+ engines: {node: '>=10'}
parse-srcset@1.0.2:
- resolution:
- {
- integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==,
- }
+ resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==}
parse5-htmlparser2-tree-adapter@7.1.0:
- resolution:
- {
- integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==,
- }
+ resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==}
parse5@7.3.0:
- resolution:
- {
- integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==,
- }
+ resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
parseurl@1.3.3:
- resolution:
- {
- integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
path-exists@3.0.0:
- resolution:
- {
- integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
+ engines: {node: '>=4'}
path-exists@4.0.0:
- resolution:
- {
- integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
path-exists@5.0.0:
- resolution:
- {
- integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==,
- }
- engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
+ resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ path-extra@1.0.3:
+ resolution: {integrity: sha512-vYm3+GCkjUlT1rDvZnDVhNLXIRvwFPaN8ebHAFcuMJM/H0RBOPD7JrcldiNLd9AS3dhAyUHLa4Hny5wp1A+Ffw==}
path-is-absolute@1.0.1:
- resolution:
- {
- integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
path-key@3.1.1:
- resolution:
- {
- integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
path-parse@1.0.7:
- resolution:
- {
- integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
- }
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
path-scurry@1.11.1:
- resolution:
- {
- integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==,
- }
- engines: { node: '>=16 || 14 >=14.18' }
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ path-scurry@2.0.1:
+ resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==}
+ engines: {node: 20 || >=22}
path-type@4.0.0:
- resolution:
- {
- integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
picocolors@1.1.1:
- resolution:
- {
- integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==,
- }
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch@2.3.1:
- resolution:
- {
- integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==,
- }
- engines: { node: '>=8.6' }
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
picomatch@3.0.1:
- resolution:
- {
- integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==}
+ engines: {node: '>=10'}
+
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
pidtree@0.5.0:
- resolution:
- {
- integrity: sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==,
- }
- engines: { node: '>=0.10' }
+ resolution: {integrity: sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==}
+ engines: {node: '>=0.10'}
hasBin: true
pirates@4.0.7:
- resolution:
- {
- integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
+ engines: {node: '>= 6'}
+
+ pkg-dir@4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
pkg-up@3.1.0:
- resolution:
- {
- integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
+ engines: {node: '>=8'}
plist@3.1.0:
- resolution:
- {
- integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==,
- }
- engines: { node: '>=10.4.0' }
+ resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
+ engines: {node: '>=10.4.0'}
pngjs@3.4.0:
- resolution:
- {
- integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==,
- }
- engines: { node: '>=4.0.0' }
+ resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==}
+ engines: {node: '>=4.0.0'}
possible-typed-array-names@1.1.0:
- resolution:
- {
- integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
postcss@8.4.49:
- resolution:
- {
- integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==,
- }
- engines: { node: ^10 || ^12 || >=14 }
+ resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
+ engines: {node: ^10 || ^12 || >=14}
postcss@8.5.6:
- resolution:
- {
- integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==,
- }
- engines: { node: ^10 || ^12 || >=14 }
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ prebuild-install@7.1.3:
+ resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
+ engines: {node: '>=10'}
+ hasBin: true
prelude-ls@1.2.1:
- resolution:
- {
- integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
prettier@2.8.8:
- resolution:
- {
- integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==,
- }
- engines: { node: '>=10.13.0' }
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
hasBin: true
pretty-bytes@5.6.0:
- resolution:
- {
- integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
+ engines: {node: '>=6'}
pretty-format@29.7.0:
- resolution:
- {
- integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==,
- }
- engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
proc-log@4.2.0:
- resolution:
- {
- integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
progress@2.0.3:
- resolution:
- {
- integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==,
- }
- engines: { node: '>=0.4.0' }
+ resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
+ engines: {node: '>=0.4.0'}
promise@8.3.0:
- resolution:
- {
- integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==,
- }
+ resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==}
prompts@2.4.2:
- resolution:
- {
- integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+ engines: {node: '>= 6'}
prop-types@15.8.1:
- resolution:
- {
- integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==,
- }
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
protobufjs@7.5.4:
- resolution:
- {
- integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==,
- }
- engines: { node: '>=12.0.0' }
+ resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
+ engines: {node: '>=12.0.0'}
+
+ pump@3.0.3:
+ resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
punycode@2.3.1:
- resolution:
- {
- integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ pure-rand@6.1.0:
+ resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
qrcode-terminal@0.11.0:
- resolution:
- {
- integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==,
- }
+ resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==}
hasBin: true
- qs@6.13.0:
- resolution:
- {
- integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==,
- }
- engines: { node: '>=0.6' }
+ qs@6.14.2:
+ resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==}
+ engines: {node: '>=0.6'}
query-string@7.1.3:
- resolution:
- {
- integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
+ engines: {node: '>=6'}
queue-microtask@1.2.3:
- resolution:
- {
- integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==,
- }
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
queue@6.0.2:
- resolution:
- {
- integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==,
- }
+ resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==}
range-parser@1.2.1:
- resolution:
- {
- integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==,
- }
- engines: { node: '>= 0.6' }
-
- raw-body@2.5.2:
- resolution:
- {
- integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.3:
+ resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
+ engines: {node: '>= 0.8'}
rc@1.2.8:
- resolution:
- {
- integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==,
- }
+ resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
react-devtools-core@6.1.5:
- resolution:
- {
- integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==,
- }
+ resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==}
react-freeze@1.0.4:
- resolution:
- {
- integrity: sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==}
+ engines: {node: '>=10'}
peerDependencies:
react: '>=17.0.0'
react-is@16.13.1:
- resolution:
- {
- integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==,
- }
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
react-is@18.3.1:
- resolution:
- {
- integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==,
- }
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
- react-is@19.2.0:
- resolution:
- {
- integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==,
- }
+ react-is@19.2.4:
+ resolution: {integrity: sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==}
react-native-background-actions@4.0.1:
- resolution:
- {
- integrity: sha512-LADhnb4ag1oH5Lotq0j8K9e2cFmrafFyg2PCME88VkTjqDUgNcJonkNdMCTHN0N3fh+hwAA7nDR4Cxkj9Q8eCw==,
- }
+ resolution: {integrity: sha512-LADhnb4ag1oH5Lotq0j8K9e2cFmrafFyg2PCME88VkTjqDUgNcJonkNdMCTHN0N3fh+hwAA7nDR4Cxkj9Q8eCw==}
peerDependencies:
react-native: '>=0.47.0'
react-native-device-info@14.1.1:
- resolution:
- {
- integrity: sha512-lXFpe6DJmzbQXNLWxlMHP2xuTU5gwrKAvI8dCAZuERhW9eOXSubOQIesk9lIBnsi9pI19GMrcpJEvs4ARPRYmw==,
- }
+ resolution: {integrity: sha512-lXFpe6DJmzbQXNLWxlMHP2xuTU5gwrKAvI8dCAZuERhW9eOXSubOQIesk9lIBnsi9pI19GMrcpJEvs4ARPRYmw==}
peerDependencies:
react-native: '*'
react-native-dotenv@3.4.11:
- resolution:
- {
- integrity: sha512-6vnIE+WHABSeHCaYP6l3O1BOEhWxKH6nHAdV7n/wKn/sciZ64zPPp2NUdEUf1m7g4uuzlLbjgr+6uDt89q2DOg==,
- }
+ resolution: {integrity: sha512-6vnIE+WHABSeHCaYP6l3O1BOEhWxKH6nHAdV7n/wKn/sciZ64zPPp2NUdEUf1m7g4uuzlLbjgr+6uDt89q2DOg==}
peerDependencies:
'@babel/runtime': ^7.20.6
react-native-draggable-flatlist@4.0.3:
- resolution:
- {
- integrity: sha512-2F4x5BFieWdGq9SetD2nSAR7s7oQCSgNllYgERRXXtNfSOuAGAVbDb/3H3lP0y5f7rEyNwabKorZAD/SyyNbDw==,
- }
+ resolution: {integrity: sha512-2F4x5BFieWdGq9SetD2nSAR7s7oQCSgNllYgERRXXtNfSOuAGAVbDb/3H3lP0y5f7rEyNwabKorZAD/SyyNbDw==}
peerDependencies:
react-native: '>=0.64.0'
react-native-gesture-handler: '>=2.0.0'
react-native-reanimated: '>=2.8.0'
- react-native-drawer-layout@4.2.0:
- resolution:
- {
- integrity: sha512-XFGK5RMcVhEqr2F4iH/cTXrcTm1uK3gIBNFPqHNO7rCXuXZTPBbQYA5yc9/Lqgw2KNQ3sAeHKvW6/WoTURo/eA==,
- }
+ react-native-drawer-layout@4.2.2:
+ resolution: {integrity: sha512-UG/PTTeyyr43KahbgoGyXri8LMO5USHY3/RUpeKBKwCc7xLVGnDLOVNSRrJw0dDc7YmPbmAyJ4oxp8nKboKKuw==}
peerDependencies:
react: '>= 18.2.0'
react-native: '*'
@@ -6762,19 +5074,13 @@ packages:
react-native-reanimated: '>= 2.0.0'
react-native-edge-to-edge@1.7.0:
- resolution:
- {
- integrity: sha512-ERegbsq28yoMndn/Uq49i4h6aAhMvTEjOfkFh50yX9H/dMjjCr/Tix/es/9JcPRvC+q7VzCMWfxWDUb6Jrq1OQ==,
- }
+ resolution: {integrity: sha512-ERegbsq28yoMndn/Uq49i4h6aAhMvTEjOfkFh50yX9H/dMjjCr/Tix/es/9JcPRvC+q7VzCMWfxWDUb6Jrq1OQ==}
peerDependencies:
react: '*'
react-native: '*'
react-native-error-boundary@2.0.0:
- resolution:
- {
- integrity: sha512-Od5jZH5DEDuxFI1x+AzCwufpMMJleEJAAj5qOBDA6Ez5+EN2rw5/59/uwW4oGMCgjsB6rpx7yIKHCMx5aIlpdQ==,
- }
+ resolution: {integrity: sha512-Od5jZH5DEDuxFI1x+AzCwufpMMJleEJAAj5qOBDA6Ez5+EN2rw5/59/uwW4oGMCgjsB6rpx7yIKHCMx5aIlpdQ==}
peerDependencies:
'@types/react-native': '>=0.57.7'
react: '>=16.6.0'
@@ -6784,1438 +5090,896 @@ packages:
optional: true
react-native-file-access@3.2.0:
- resolution:
- {
- integrity: sha512-3G0Ma3FvV99Ne7lbwHyZKqLMZVrpIr6fAlIYZQxkRDSZZJ1UtJlGi0VqbJXnJFB26a7C7PEPyVBoctmKr7DzaA==,
- }
+ resolution: {integrity: sha512-3G0Ma3FvV99Ne7lbwHyZKqLMZVrpIr6fAlIYZQxkRDSZZJ1UtJlGi0VqbJXnJFB26a7C7PEPyVBoctmKr7DzaA==}
peerDependencies:
react: '*'
react-native: '*'
- react-native-gesture-handler@2.29.1:
- resolution:
- {
- integrity: sha512-du3qmv0e3Sm7qsd9SfmHps+AggLiylcBBQ8ztz7WUtd8ZjKs5V3kekAbi9R2W9bRLSg47Ntp4GGMYZOhikQdZA==,
- }
+ react-native-gesture-handler@2.30.0:
+ resolution: {integrity: sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==}
peerDependencies:
react: '*'
react-native: '*'
react-native-is-edge-to-edge@1.2.1:
- resolution:
- {
- integrity: sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==,
- }
+ resolution: {integrity: sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==}
peerDependencies:
react: '*'
react-native: '*'
react-native-linear-gradient@2.8.3:
- resolution:
- {
- integrity: sha512-KflAXZcEg54PXkLyflaSZQ3PJp4uC4whM7nT/Uot9m0e/qxFV3p6uor1983D1YOBJbJN7rrWdqIjq0T42jOJyA==,
- }
+ resolution: {integrity: sha512-KflAXZcEg54PXkLyflaSZQ3PJp4uC4whM7nT/Uot9m0e/qxFV3p6uor1983D1YOBJbJN7rrWdqIjq0T42jOJyA==}
peerDependencies:
react: '*'
react-native: '*'
react-native-lottie-splash-screen@1.1.2:
- resolution:
- {
- integrity: sha512-5V4sk46UlU2MbRDlncT0O3qtBdqjxKfcW5/VXceU82CPcO0z0ItcaX34L74Zt5fqkR80OW1VCccrsIGly1y0lw==,
- }
+ resolution: {integrity: sha512-5V4sk46UlU2MbRDlncT0O3qtBdqjxKfcW5/VXceU82CPcO0z0ItcaX34L74Zt5fqkR80OW1VCccrsIGly1y0lw==}
peerDependencies:
react-native: '>=0.57.0'
react-native-mmkv@3.3.3:
- resolution:
- {
- integrity: sha512-GMsfOmNzx0p5+CtrCFRVtpOOMYNJXuksBVARSQrCFaZwjUyHJdQzcN900GGaFFNTxw2fs8s5Xje//RDKj9+PZA==,
- }
+ resolution: {integrity: sha512-GMsfOmNzx0p5+CtrCFRVtpOOMYNJXuksBVARSQrCFaZwjUyHJdQzcN900GGaFFNTxw2fs8s5Xje//RDKj9+PZA==}
peerDependencies:
react: '*'
react-native: '*'
react-native-pager-view@6.9.1:
- resolution:
- {
- integrity: sha512-uUT0MMMbNtoSbxe9pRvdJJKEi9snjuJ3fXlZhG8F2vVMOBJVt/AFtqMPUHu9yMflmqOr08PewKzj9EPl/Yj+Gw==,
- }
+ resolution: {integrity: sha512-uUT0MMMbNtoSbxe9pRvdJJKEi9snjuJ3fXlZhG8F2vVMOBJVt/AFtqMPUHu9yMflmqOr08PewKzj9EPl/Yj+Gw==}
peerDependencies:
react: '*'
react-native: '*'
- react-native-paper@5.14.5:
- resolution:
- {
- integrity: sha512-eaIH5bUQjJ/mYm4AkI6caaiyc7BcHDwX6CqNDi6RIxfxfWxROsHpll1oBuwn/cFvknvA8uEAkqLk/vzVihI3AQ==,
- }
+ react-native-paper@5.15.0:
+ resolution: {integrity: sha512-I/1CQLfW9VM0Oo5I5dQI/hjgf1I6q2S1wwgzAdsv6whAQ3zO97GWHwtgNh9se9j8zBOJ86afPTQKxxUL0IJd9A==}
peerDependencies:
react: '*'
react-native: '*'
react-native-safe-area-context: '*'
- react-native-reanimated@4.1.5:
- resolution:
- {
- integrity: sha512-UA6VUbxwhRjEw2gSNrvhkusUq3upfD3Cv+AnB07V+kC8kpvwRVI+ivwY95ePbWNFkFpP+Y2Sdw1WHpHWEV+P2Q==,
- }
+ react-native-reanimated@4.2.2:
+ resolution: {integrity: sha512-o3kKvdD8cVlg12Z4u3jv0MFAt53QV4k7gD9OLwQqU8eZLyd8QvaOjVZIghMZhC2pjP93uUU44PlO5JgF8S4Vxw==}
peerDependencies:
- '@babel/core': ^7.0.0-0
react: '*'
react-native: '*'
- react-native-worklets: '>=0.5.0'
+ react-native-worklets: '>=0.7.0'
react-native-saf-x@2.2.3:
- resolution:
- {
- integrity: sha512-aPQbUfuHy8txZ/+t8Daoy8G3aRZ5H+0/SH9mJdb6quvxvt48jeIjq2n82anV77tSCXyX0du955PrtWpRzYliPQ==,
- }
+ resolution: {integrity: sha512-aPQbUfuHy8txZ/+t8Daoy8G3aRZ5H+0/SH9mJdb6quvxvt48jeIjq2n82anV77tSCXyX0du955PrtWpRzYliPQ==}
peerDependencies:
react: '*'
react-native: '*'
react-native-safe-area-context@5.6.2:
- resolution:
- {
- integrity: sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==,
- }
+ resolution: {integrity: sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==}
peerDependencies:
react: '*'
react-native: '*'
react-native-safe-modules@1.0.3:
- resolution:
- {
- integrity: sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA==,
- }
+ resolution: {integrity: sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA==}
peerDependencies:
react-native: '*'
- react-native-screens@4.18.0:
- resolution:
- {
- integrity: sha512-mRTLWL7Uc1p/RFNveEIIrhP22oxHduC2ZnLr/2iHwBeYpGXR0rJZ7Bgc0ktxQSHRjWTPT70qc/7yd4r9960PBQ==,
- }
+ react-native-screens@4.23.0:
+ resolution: {integrity: sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==}
peerDependencies:
react: '*'
react-native: '*'
react-native-shimmer-placeholder@2.0.9:
- resolution:
- {
- integrity: sha512-s2pfAAO6uaybREYM2KcaxP3c2XlZvLfHfzmhMlGEoOhSKaoM92KpA1Hx0BeC75yilkliJuowqO/hFzvLB0h7hg==,
- }
+ resolution: {integrity: sha512-s2pfAAO6uaybREYM2KcaxP3c2XlZvLfHfzmhMlGEoOhSKaoM92KpA1Hx0BeC75yilkliJuowqO/hFzvLB0h7hg==}
peerDependencies:
prop-types: '>=15.6.0'
react-native-linear-gradient: '>=2.4.0'
- react-native-tab-view@4.2.0:
- resolution:
- {
- integrity: sha512-TUbh7Yr0tE/99t1pJQLbQ+4/Px67xkT7/r3AhfV+93Q3WoUira0Lx7yuKUP2C118doqxub8NCLERwcqsHr29nQ==,
- }
+ react-native-tab-view@4.2.2:
+ resolution: {integrity: sha512-NXtrG6OchvbGjsvbySJGVocXxo4Y2vA17ph4rAaWtA2jh+AasD8OyikKBRg2SmllEfeQ+GEhcKe8kulHv8BhTg==}
peerDependencies:
react: '>= 18.2.0'
react-native: '*'
react-native-pager-view: '>= 6.0.0'
react-native-url-polyfill@2.0.0:
- resolution:
- {
- integrity: sha512-My330Do7/DvKnEvwQc0WdcBnFPploYKp9CYlefDXzIdEaA+PAhDYllkvGeEroEzvc4Kzzj2O4yVdz8v6fjRvhA==,
- }
+ resolution: {integrity: sha512-My330Do7/DvKnEvwQc0WdcBnFPploYKp9CYlefDXzIdEaA+PAhDYllkvGeEroEzvc4Kzzj2O4yVdz8v6fjRvhA==}
peerDependencies:
react-native: '*'
react-native-webview@13.15.0:
- resolution:
- {
- integrity: sha512-Vzjgy8mmxa/JO6l5KZrsTC7YemSdq+qB01diA0FqjUTaWGAGwuykpJ73MDj3+mzBSlaDxAEugHzTtkUQkQEQeQ==,
- }
+ resolution: {integrity: sha512-Vzjgy8mmxa/JO6l5KZrsTC7YemSdq+qB01diA0FqjUTaWGAGwuykpJ73MDj3+mzBSlaDxAEugHzTtkUQkQEQeQ==}
peerDependencies:
react: '*'
react-native: '*'
- react-native-worklets@0.6.1:
- resolution:
- {
- integrity: sha512-URca8l7c7Uog7gv4mcg9KILdJlnbvwdS5yfXQYf5TDkD2W1VY1sduEKrD+sA3lUPXH/TG1vmXAvNxCNwPMYgGg==,
- }
+ react-native-worklets@0.7.4:
+ resolution: {integrity: sha512-NYOdM1MwBb3n+AtMqy1tFy3Mn8DliQtd8sbzAVRf9Gc+uvQ0zRfxN7dS8ZzoyX7t6cyQL5THuGhlnX+iFlQTag==}
peerDependencies:
- '@babel/core': ^7.0.0-0
+ '@babel/core': '*'
react: '*'
react-native: '*'
react-native-zip-archive@6.1.2:
- resolution:
- {
- integrity: sha512-LcJomSY/6O3KHy/LF6Gb7F/yRJiZJ0lTlPQPbfeOHBQzfvqNJFJZ8x6HrdeYeokFf/UGB5bY7jfh4es6Y/PhBA==,
- }
+ resolution: {integrity: sha512-LcJomSY/6O3KHy/LF6Gb7F/yRJiZJ0lTlPQPbfeOHBQzfvqNJFJZ8x6HrdeYeokFf/UGB5bY7jfh4es6Y/PhBA==}
peerDependencies:
react: '>=16.8.6'
react-native: '>=0.60.0'
react-native-zip-archive@7.0.2:
- resolution:
- {
- integrity: sha512-msCRJMcwH6NVZ2/zoC+1nvA0wlpYRnMxteQywS9nt4BzXn48tZpaVtE519QEZn0xe3ygvgsWx5cdPoE9Jx3bsg==,
- }
+ resolution: {integrity: sha512-msCRJMcwH6NVZ2/zoC+1nvA0wlpYRnMxteQywS9nt4BzXn48tZpaVtE519QEZn0xe3ygvgsWx5cdPoE9Jx3bsg==}
peerDependencies:
react: '>=16.8.6'
react-native: '>=0.60.0'
- react-native@0.81.5:
- resolution:
- {
- integrity: sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==,
- }
- engines: { node: '>= 20.19.4' }
+ react-native@0.81.6:
+ resolution: {integrity: sha512-X/tI8GqfzVaa+zfbE4+lySNN5UzwBIAVRHVZPKymOny9Acc5GYYcjAcEVfG3AM4h920YALWoSl8favnDmQEWIg==}
+ engines: {node: '>= 20.19.4'}
hasBin: true
peerDependencies:
- '@types/react': ^19.1.0
- react: ^19.1.0
+ '@types/react': ^19.1.4
+ react: ^19.1.4
peerDependenciesMeta:
'@types/react':
optional: true
react-refresh@0.14.2:
- resolution:
- {
- integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==,
- }
- engines: { node: '>=0.10.0' }
-
- react@19.1.0:
- resolution:
- {
- integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
+ engines: {node: '>=0.10.0'}
+
+ react@19.1.4:
+ resolution: {integrity: sha512-DHINL3PAmPUiK1uszfbKiXqfE03eszdt5BpVSuEAHb5nfmNPwnsy7g39h2t8aXFc/Bv99GH81s+j8dobtD+jOw==}
+ engines: {node: '>=0.10.0'}
readable-stream@3.6.2:
- resolution:
- {
- integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readable-stream@4.7.0:
+ resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
reflect.getprototypeof@1.0.10:
- resolution:
- {
- integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
+ engines: {node: '>= 0.4'}
regenerate-unicode-properties@10.2.2:
- resolution:
- {
- integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==}
+ engines: {node: '>=4'}
regenerate@1.4.2:
- resolution:
- {
- integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==,
- }
+ resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
regenerator-runtime@0.13.11:
- resolution:
- {
- integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==,
- }
+ resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
regexp.prototype.flags@1.5.4:
- resolution:
- {
- integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
+ engines: {node: '>= 0.4'}
regexpu-core@6.4.0:
- resolution:
- {
- integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==}
+ engines: {node: '>=4'}
regjsgen@0.8.0:
- resolution:
- {
- integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==,
- }
+ resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
regjsparser@0.13.0:
- resolution:
- {
- integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==,
- }
+ resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==}
hasBin: true
require-directory@2.1.1:
- resolution:
- {
- integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
require-from-string@2.0.2:
- resolution:
- {
- integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
require-main-filename@2.0.0:
- resolution:
- {
- integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==,
- }
+ resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+
+ require-resolve@0.0.2:
+ resolution: {integrity: sha512-eafQVaxdQsWUB8HybwognkdcIdKdQdQBwTxH48FuE6WI0owZGKp63QYr1MRp73PoX0AcyB7MDapZThYUY8FD0A==}
requireg@0.2.2:
- resolution:
- {
- integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==,
- }
- engines: { node: '>= 4.0.0' }
+ resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==}
+ engines: {node: '>= 4.0.0'}
reselect@4.1.8:
- resolution:
- {
- integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==,
- }
+ resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==}
+
+ resolve-cwd@3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
resolve-from@4.0.0:
- resolution:
- {
- integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
resolve-from@5.0.0:
- resolution:
- {
- integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
resolve-global@1.0.0:
- resolution:
- {
- integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==,
- }
- engines: { node: '>=8' }
-
- resolve-workspace-root@2.0.0:
- resolution:
- {
- integrity: sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==,
- }
+ resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==}
+ engines: {node: '>=8'}
+
+ resolve-workspace-root@2.0.1:
+ resolution: {integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==}
resolve.exports@2.0.3:
- resolution:
- {
- integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==}
+ engines: {node: '>=10'}
resolve@1.22.11:
- resolution:
- {
- integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ engines: {node: '>= 0.4'}
hasBin: true
resolve@1.7.1:
- resolution:
- {
- integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==,
- }
-
- resolve@2.0.0-next.5:
- resolution:
- {
- integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==,
- }
+ resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==}
+
+ resolve@2.0.0-next.6:
+ resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==}
+ engines: {node: '>= 0.4'}
hasBin: true
restore-cursor@2.0.0:
- resolution:
- {
- integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==}
+ engines: {node: '>=4'}
restore-cursor@3.1.0:
- resolution:
- {
- integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
reusify@1.1.0:
- resolution:
- {
- integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==,
- }
- engines: { iojs: '>=1.0.0', node: '>=0.10.0' }
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
rfdc@1.4.1:
- resolution:
- {
- integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==,
- }
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
rimraf@3.0.2:
- resolution:
- {
- integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==,
- }
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
rtl-detect@1.1.2:
- resolution:
- {
- integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==,
- }
+ resolution: {integrity: sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==}
+
+ run-applescript@7.1.0:
+ resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
+ engines: {node: '>=18'}
run-parallel@1.2.0:
- resolution:
- {
- integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==,
- }
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
rxjs@7.8.2:
- resolution:
- {
- integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==,
- }
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
safe-array-concat@1.1.3:
- resolution:
- {
- integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==,
- }
- engines: { node: '>=0.4' }
+ resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
+ engines: {node: '>=0.4'}
safe-buffer@5.2.1:
- resolution:
- {
- integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==,
- }
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
safe-push-apply@1.0.0:
- resolution:
- {
- integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
+ engines: {node: '>= 0.4'}
safe-regex-test@1.1.0:
- resolution:
- {
- integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
+ engines: {node: '>= 0.4'}
safer-buffer@2.1.2:
- resolution:
- {
- integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==,
- }
-
- sanitize-html@2.17.0:
- resolution:
- {
- integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==,
- }
-
- sax@1.4.3:
- resolution:
- {
- integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==,
- }
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ sanitize-html@2.17.1:
+ resolution: {integrity: sha512-ehFCW+q1a4CSOWRAdX97BX/6/PDEkCqw7/0JXZAGQV57FQB3YOkTa/rrzHPeJ+Aghy4vZAFfWMYyfxIiB7F/gw==}
+
+ sax@1.4.4:
+ resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==}
+ engines: {node: '>=11.0.0'}
scheduler@0.26.0:
- resolution:
- {
- integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==,
- }
+ resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==}
semver@6.3.1:
- resolution:
- {
- integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==,
- }
- hasBin: true
-
- semver@7.7.2:
- resolution:
- {
- integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
semver@7.7.3:
- resolution:
- {
- integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
hasBin: true
- send@0.19.0:
- resolution:
- {
- integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==,
- }
- engines: { node: '>= 0.8.0' }
+ semver@7.7.4:
+ resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
+ engines: {node: '>=10'}
+ hasBin: true
- send@0.19.1:
- resolution:
- {
- integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==,
- }
- engines: { node: '>= 0.8.0' }
+ send@0.19.2:
+ resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==}
+ engines: {node: '>= 0.8.0'}
serialize-error@2.1.0:
- resolution:
- {
- integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==,
- }
- engines: { node: '>=0.10.0' }
-
- serve-static@1.16.2:
- resolution:
- {
- integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==}
+ engines: {node: '>=0.10.0'}
+
+ serve-static@1.16.3:
+ resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==}
+ engines: {node: '>= 0.8.0'}
set-blocking@2.0.0:
- resolution:
- {
- integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==,
- }
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
set-function-length@1.2.2:
- resolution:
- {
- integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
set-function-name@2.0.2:
- resolution:
- {
- integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
set-proto@1.0.0:
- resolution:
- {
- integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
+ engines: {node: '>= 0.4'}
setprototypeof@1.2.0:
- resolution:
- {
- integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==,
- }
-
- sf-symbols-typescript@2.1.0:
- resolution:
- {
- integrity: sha512-ezT7gu/SHTPIOEEoG6TF+O0m5eewl0ZDAO4AtdBi5HjsrUI6JdCG17+Q8+aKp0heM06wZKApRCn5olNbs0Wb/A==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ sf-symbols-typescript@2.2.0:
+ resolution: {integrity: sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==}
+ engines: {node: '>=10'}
shebang-command@2.0.0:
- resolution:
- {
- integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
shebang-regex@3.0.0:
- resolution:
- {
- integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
shell-quote@1.8.3:
- resolution:
- {
- integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
+ engines: {node: '>= 0.4'}
side-channel-list@1.0.0:
- resolution:
- {
- integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
side-channel-map@1.0.1:
- resolution:
- {
- integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
side-channel-weakmap@1.0.2:
- resolution:
- {
- integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
side-channel@1.1.0:
- resolution:
- {
- integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
signal-exit@3.0.7:
- resolution:
- {
- integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==,
- }
-
- signal-exit@4.1.0:
- resolution:
- {
- integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
- }
- engines: { node: '>=14' }
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ simple-concat@1.0.1:
+ resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
+
+ simple-get@4.0.1:
+ resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
simple-plist@1.3.1:
- resolution:
- {
- integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==,
- }
+ resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==}
simple-swizzle@0.2.4:
- resolution:
- {
- integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==,
- }
+ resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}
sisteransi@1.0.5:
- resolution:
- {
- integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==,
- }
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
slash@3.0.0:
- resolution:
- {
- integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
slice-ansi@2.1.0:
- resolution:
- {
- integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==}
+ engines: {node: '>=6'}
slice-ansi@3.0.0:
- resolution:
- {
- integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
slice-ansi@4.0.0:
- resolution:
- {
- integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
+ engines: {node: '>=10'}
slice-ansi@5.0.0:
- resolution:
- {
- integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
+ engines: {node: '>=12'}
slugify@1.6.6:
- resolution:
- {
- integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==,
- }
- engines: { node: '>=8.0.0' }
+ resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==}
+ engines: {node: '>=8.0.0'}
source-map-js@1.2.1:
- resolution:
- {
- integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.13:
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
source-map-support@0.5.21:
- resolution:
- {
- integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==,
- }
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
source-map@0.5.7:
- resolution:
- {
- integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
source-map@0.6.1:
- resolution:
- {
- integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
split-on-first@1.1.0:
- resolution:
- {
- integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
+ engines: {node: '>=6'}
sprintf-js@1.0.3:
- resolution:
- {
- integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==,
- }
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
+ sprintf-js@1.1.3:
+ resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
stack-utils@2.0.6:
- resolution:
- {
- integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
stackframe@1.3.4:
- resolution:
- {
- integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==,
- }
+ resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
stacktrace-parser@0.1.11:
- resolution:
- {
- integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==}
+ engines: {node: '>=6'}
statuses@1.5.0:
- resolution:
- {
- integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==,
- }
- engines: { node: '>= 0.6' }
-
- statuses@2.0.1:
- resolution:
- {
- integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
+ engines: {node: '>= 0.6'}
+
+ statuses@2.0.2:
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
stop-iteration-iterator@1.1.0:
- resolution:
- {
- integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
+ engines: {node: '>= 0.4'}
stream-buffers@2.2.0:
- resolution:
- {
- integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==,
- }
- engines: { node: '>= 0.10.0' }
+ resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==}
+ engines: {node: '>= 0.10.0'}
strict-uri-encode@2.0.0:
- resolution:
- {
- integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
+ engines: {node: '>=4'}
+
+ strict-url-sanitise@0.0.1:
+ resolution: {integrity: sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==}
string-argv@0.3.2:
- resolution:
- {
- integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==,
- }
- engines: { node: '>=0.6.19' }
+ resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
+ engines: {node: '>=0.6.19'}
+
+ string-length@4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
string-natural-compare@3.0.1:
- resolution:
- {
- integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==,
- }
+ resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==}
string-width@4.2.3:
- resolution:
- {
- integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
string-width@5.1.2:
- resolution:
- {
- integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
string.prototype.matchall@4.0.12:
- resolution:
- {
- integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
+ engines: {node: '>= 0.4'}
string.prototype.repeat@1.0.0:
- resolution:
- {
- integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==,
- }
+ resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
string.prototype.trim@1.2.10:
- resolution:
- {
- integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
+ engines: {node: '>= 0.4'}
string.prototype.trimend@1.0.9:
- resolution:
- {
- integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+ engines: {node: '>= 0.4'}
string.prototype.trimstart@1.0.8:
- resolution:
- {
- integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
string_decoder@1.3.0:
- resolution:
- {
- integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==,
- }
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
strip-ansi@5.2.0:
- resolution:
- {
- integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
+ engines: {node: '>=6'}
strip-ansi@6.0.1:
- resolution:
- {
- integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
strip-ansi@7.1.2:
- resolution:
- {
- integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
+ engines: {node: '>=12'}
+
+ strip-bom@4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
strip-final-newline@2.0.0:
- resolution:
- {
- integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
strip-json-comments@2.0.1:
- resolution:
- {
- integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+ engines: {node: '>=0.10.0'}
strip-json-comments@3.1.1:
- resolution:
- {
- integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
strnum@1.1.2:
- resolution:
- {
- integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==,
- }
+ resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==}
structured-headers@0.4.1:
- resolution:
- {
- integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==,
- }
-
- sucrase@3.35.0:
- resolution:
- {
- integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==,
- }
- engines: { node: '>=16 || 14 >=14.17' }
+ resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==}
+
+ sucrase@3.35.1:
+ resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==}
+ engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
supports-color@5.5.0:
- resolution:
- {
- integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
supports-color@7.2.0:
- resolution:
- {
- integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
supports-color@8.1.1:
- resolution:
- {
- integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
supports-color@9.4.0:
- resolution:
- {
- integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==}
+ engines: {node: '>=12'}
supports-hyperlinks@2.3.0:
- resolution:
- {
- integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
+ engines: {node: '>=8'}
supports-preserve-symlinks-flag@1.0.0:
- resolution:
- {
- integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==,
- }
- engines: { node: '>= 0.4' }
-
- tar@7.5.2:
- resolution:
- {
- integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ tar-fs@2.1.4:
+ resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==}
+
+ tar-stream@2.2.0:
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
+
+ tar@7.5.9:
+ resolution: {integrity: sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==}
+ engines: {node: '>=18'}
+
+ tarn@3.0.2:
+ resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==}
+ engines: {node: '>=8.0.0'}
+
+ tedious@18.6.2:
+ resolution: {integrity: sha512-g7jC56o3MzLkE3lHkaFe2ZdOVFBahq5bsB60/M4NYUbocw/MCrS89IOEQUFr+ba6pb8ZHczZ/VqCyYeYq0xBAg==}
+ engines: {node: '>=18'}
+
+ tedious@19.2.1:
+ resolution: {integrity: sha512-pk1Q16Yl62iocuQB+RWbg6rFUFkIyzqOFQ6NfysCltRvQqKwfurgj8v/f2X+CKvDhSL4IJ0cCOfCHDg9PWEEYA==}
+ engines: {node: '>=18.17'}
temp-dir@2.0.0:
- resolution:
- {
- integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
+ engines: {node: '>=8'}
terminal-link@2.1.1:
- resolution:
- {
- integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==,
- }
- engines: { node: '>=8' }
-
- terser@5.44.1:
- resolution:
- {
- integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
+ engines: {node: '>=8'}
+
+ terser@5.46.0:
+ resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==}
+ engines: {node: '>=10'}
hasBin: true
test-exclude@6.0.0:
- resolution:
- {
- integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
text-table@0.2.0:
- resolution:
- {
- integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==,
- }
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
thenify-all@1.6.0:
- resolution:
- {
- integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==,
- }
- engines: { node: '>=0.8' }
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
thenify@3.3.1:
- resolution:
- {
- integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==,
- }
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
throat@5.0.0:
- resolution:
- {
- integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==,
- }
+ resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
through@2.3.8:
- resolution:
- {
- integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==,
- }
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+
+ tinyglobby@0.2.15:
+ resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+ engines: {node: '>=12.0.0'}
tmpl@1.0.5:
- resolution:
- {
- integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==,
- }
+ resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
to-regex-range@5.0.1:
- resolution:
- {
- integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
- }
- engines: { node: '>=8.0' }
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
toidentifier@1.0.1:
- resolution:
- {
- integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==,
- }
- engines: { node: '>=0.6' }
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
ts-api-utils@1.4.3:
- resolution:
- {
- integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==,
- }
- engines: { node: '>=16' }
+ resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
+ engines: {node: '>=16'}
peerDependencies:
typescript: '>=4.2.0'
+ ts-api-utils@2.4.0:
+ resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==}
+ engines: {node: '>=18.12'}
+ peerDependencies:
+ typescript: '>=4.8.4'
+
ts-interface-checker@0.1.13:
- resolution:
- {
- integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==,
- }
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
tslib@1.14.1:
- resolution:
- {
- integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==,
- }
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
tslib@2.8.1:
- resolution:
- {
- integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==,
- }
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tsutils@3.21.0:
- resolution:
- {
- integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==,
- }
- engines: { node: '>= 6' }
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+ tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+
type-check@0.4.0:
- resolution:
- {
- integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==,
- }
- engines: { node: '>= 0.8.0' }
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
type-detect@4.0.8:
- resolution:
- {
- integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
type-fest@0.20.2:
- resolution:
- {
- integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
type-fest@0.21.3:
- resolution:
- {
- integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
type-fest@0.7.1:
- resolution:
- {
- integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==}
+ engines: {node: '>=8'}
type-is@1.6.18:
- resolution:
- {
- integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==,
- }
- engines: { node: '>= 0.6' }
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
typed-array-buffer@1.0.3:
- resolution:
- {
- integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
+ engines: {node: '>= 0.4'}
typed-array-byte-length@1.0.3:
- resolution:
- {
- integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
+ engines: {node: '>= 0.4'}
typed-array-byte-offset@1.0.4:
- resolution:
- {
- integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
+ engines: {node: '>= 0.4'}
typed-array-length@1.0.7:
- resolution:
- {
- integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
+ engines: {node: '>= 0.4'}
typescript@5.9.3:
- resolution:
- {
- integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==,
- }
- engines: { node: '>=14.17' }
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
hasBin: true
unbox-primitive@1.1.0:
- resolution:
- {
- integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
+ engines: {node: '>= 0.4'}
undici-types@7.16.0:
- resolution:
- {
- integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==,
- }
-
- undici@6.22.0:
- resolution:
- {
- integrity: sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==,
- }
- engines: { node: '>=18.17' }
+ resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
+
+ undici@6.23.0:
+ resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==}
+ engines: {node: '>=18.17'}
unicode-canonical-property-names-ecmascript@2.0.1:
- resolution:
- {
- integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==}
+ engines: {node: '>=4'}
unicode-match-property-ecmascript@2.0.0:
- resolution:
- {
- integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
+ engines: {node: '>=4'}
unicode-match-property-value-ecmascript@2.2.1:
- resolution:
- {
- integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==}
+ engines: {node: '>=4'}
unicode-property-aliases-ecmascript@2.2.0:
- resolution:
- {
- integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==,
- }
- engines: { node: '>=4' }
+ resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==}
+ engines: {node: '>=4'}
unicorn-magic@0.1.0:
- resolution:
- {
- integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
+ engines: {node: '>=18'}
unique-string@2.0.0:
- resolution:
- {
- integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
+ engines: {node: '>=8'}
universalify@0.1.2:
- resolution:
- {
- integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==,
- }
- engines: { node: '>= 4.0.0' }
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
unpipe@1.0.0:
- resolution:
- {
- integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==,
- }
- engines: { node: '>= 0.8' }
-
- update-browserslist-db@1.1.4:
- resolution:
- {
- integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==,
- }
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
uri-js@4.4.1:
- resolution:
- {
- integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==,
- }
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
urlencode@2.0.0:
- resolution:
- {
- integrity: sha512-K4+koEq4II9FqKKdLyMwfVFiWvTLJsdsIihXCprumjlOwpviO44E4hAhLYBLb6CEVTZh9hXXMTQHIT+Hwv5BPw==,
- }
+ resolution: {integrity: sha512-K4+koEq4II9FqKKdLyMwfVFiWvTLJsdsIihXCprumjlOwpviO44E4hAhLYBLb6CEVTZh9hXXMTQHIT+Hwv5BPw==}
use-latest-callback@0.2.6:
- resolution:
- {
- integrity: sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==,
- }
+ resolution: {integrity: sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==}
peerDependencies:
react: '>=16.8'
use-sync-external-store@1.6.0:
- resolution:
- {
- integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==,
- }
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
util-deprecate@1.0.2:
- resolution:
- {
- integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==,
- }
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
util@0.12.5:
- resolution:
- {
- integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==,
- }
+ resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
utils-merge@1.0.1:
- resolution:
- {
- integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==,
- }
- engines: { node: '>= 0.4.0' }
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
uuid@7.0.3:
- resolution:
- {
- integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==,
- }
+ resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==}
hasBin: true
+ uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+
+ v8-to-istanbul@9.3.0:
+ resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
+ engines: {node: '>=10.12.0'}
+
validate-npm-package-name@5.0.1:
- resolution:
- {
- integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==,
- }
- engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 }
+ resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
vary@1.1.2:
- resolution:
- {
- integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==,
- }
- engines: { node: '>= 0.8' }
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
vlq@1.0.1:
- resolution:
- {
- integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==,
- }
+ resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==}
walker@1.0.8:
- resolution:
- {
- integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==,
- }
+ resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
warn-once@0.1.1:
- resolution:
- {
- integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==,
- }
+ resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==}
wcwidth@1.0.1:
- resolution:
- {
- integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==,
- }
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
webidl-conversions@5.0.0:
- resolution:
- {
- integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==}
+ engines: {node: '>=8'}
whatwg-fetch@3.6.20:
- resolution:
- {
- integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==,
- }
+ resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
whatwg-url-without-unicode@8.0.0-3:
- resolution:
- {
- integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==}
+ engines: {node: '>=10'}
which-boxed-primitive@1.1.1:
- resolution:
- {
- integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
+ engines: {node: '>= 0.4'}
which-builtin-type@1.2.1:
- resolution:
- {
- integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
+ engines: {node: '>= 0.4'}
which-collection@1.0.2:
- resolution:
- {
- integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
which-module@2.0.1:
- resolution:
- {
- integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==,
- }
-
- which-typed-array@1.1.19:
- resolution:
- {
- integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==,
- }
- engines: { node: '>= 0.4' }
+ resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+
+ which-typed-array@1.1.20:
+ resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==}
+ engines: {node: '>= 0.4'}
which@2.0.2:
- resolution:
- {
- integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
- }
- engines: { node: '>= 8' }
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
hasBin: true
wonka@6.3.5:
- resolution:
- {
- integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==,
- }
+ resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==}
word-wrap@1.2.5:
- resolution:
- {
- integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==,
- }
- engines: { node: '>=0.10.0' }
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
wrap-ansi@6.2.0:
- resolution:
- {
- integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
wrap-ansi@7.0.0:
- resolution:
- {
- integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==,
- }
- engines: { node: '>=10' }
-
- wrap-ansi@8.1.0:
- resolution:
- {
- integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
wrappy@1.0.2:
- resolution:
- {
- integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==,
- }
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
write-file-atomic@4.0.2:
- resolution:
- {
- integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==,
- }
- engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 }
+ resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
ws@6.2.3:
- resolution:
- {
- integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==,
- }
+ resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
@@ -8226,11 +5990,8 @@ packages:
optional: true
ws@7.5.10:
- resolution:
- {
- integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==,
- }
- engines: { node: '>=8.3.0' }
+ resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
+ engines: {node: '>=8.3.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
@@ -8240,12 +6001,9 @@ packages:
utf-8-validate:
optional: true
- ws@8.18.3:
- resolution:
- {
- integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==,
- }
- engines: { node: '>=10.0.0' }
+ ws@8.19.0:
+ resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==}
+ engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
@@ -8255,219 +6013,318 @@ packages:
utf-8-validate:
optional: true
+ wsl-utils@0.1.0:
+ resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==}
+ engines: {node: '>=18'}
+
+ x-path@0.0.2:
+ resolution: {integrity: sha512-zQ4WFI0XfJN1uEkkrB19Y4TuXOlHqKSxUJo0Yt+axPjRm8tCG6SJ6+Wo3/+Kjg4c2c8IvBXuJ0uYoshxNn4qMw==}
+
xcode@3.0.1:
- resolution:
- {
- integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==,
- }
- engines: { node: '>=10.0.0' }
+ resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==}
+ engines: {node: '>=10.0.0'}
xml2js@0.6.0:
- resolution:
- {
- integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==,
- }
- engines: { node: '>=4.0.0' }
+ resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==}
+ engines: {node: '>=4.0.0'}
xmlbuilder@11.0.1:
- resolution:
- {
- integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==,
- }
- engines: { node: '>=4.0' }
+ resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
+ engines: {node: '>=4.0'}
xmlbuilder@15.1.1:
- resolution:
- {
- integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==,
- }
- engines: { node: '>=8.0' }
+ resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==}
+ engines: {node: '>=8.0'}
y18n@4.0.3:
- resolution:
- {
- integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==,
- }
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
y18n@5.0.8:
- resolution:
- {
- integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
yallist@3.1.1:
- resolution:
- {
- integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==,
- }
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
yallist@5.0.0:
- resolution:
- {
- integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==,
- }
- engines: { node: '>=18' }
+ resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
+ engines: {node: '>=18'}
yaml@1.10.2:
- resolution:
- {
- integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==,
- }
- engines: { node: '>= 6' }
-
- yaml@2.8.1:
- resolution:
- {
- integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==,
- }
- engines: { node: '>= 14.6' }
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+
+ yaml@2.8.2:
+ resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==}
+ engines: {node: '>= 14.6'}
hasBin: true
yargs-parser@18.1.3:
- resolution:
- {
- integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==,
- }
- engines: { node: '>=6' }
+ resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+ engines: {node: '>=6'}
yargs-parser@21.1.1:
- resolution:
- {
- integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
yargs@15.4.1:
- resolution:
- {
- integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==,
- }
- engines: { node: '>=8' }
+ resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+ engines: {node: '>=8'}
yargs@17.7.2:
- resolution:
- {
- integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==,
- }
- engines: { node: '>=12' }
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
yocto-queue@0.1.0:
- resolution:
- {
- integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
- }
- engines: { node: '>=10' }
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
yocto-queue@1.2.2:
- resolution:
- {
- integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==,
- }
- engines: { node: '>=12.20' }
-
- zod-to-json-schema@3.25.0:
- resolution:
- {
- integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==,
- }
- peerDependencies:
- zod: ^3.25 || ^4
-
- zod@3.25.76:
- resolution:
- {
- integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==,
- }
+ resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
+ engines: {node: '>=12.20'}
+
+ zod-validation-error@4.0.2:
+ resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ zod: ^3.25.0 || ^4.0.0
+
+ zod@4.3.6:
+ resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
snapshots:
+
'@0no-co/graphql.web@1.2.0': {}
- '@babel/code-frame@7.10.4':
+ '@azure-rest/core-client@2.5.1':
dependencies:
- '@babel/highlight': 7.25.9
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-rest-pipeline': 1.22.2
+ '@azure/core-tracing': 1.3.1
+ '@typespec/ts-http-runtime': 0.3.3
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
- '@babel/code-frame@7.27.1':
+ '@azure/abort-controller@2.1.2':
dependencies:
- '@babel/helper-validator-identifier': 7.28.5
- js-tokens: 4.0.0
- picocolors: 1.1.1
+ tslib: 2.8.1
- '@babel/compat-data@7.28.5': {}
+ '@azure/core-auth@1.10.1':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-util': 1.13.1
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
- '@babel/core@7.28.5':
+ '@azure/core-client@1.10.1':
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helpers': 7.28.4
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
- '@jridgewell/remapping': 2.3.5
- convert-source-map: 2.0.0
- debug: 4.4.3(supports-color@9.4.0)
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-rest-pipeline': 1.22.2
+ '@azure/core-tracing': 1.3.1
+ '@azure/core-util': 1.13.1
+ '@azure/logger': 1.3.0
+ tslib: 2.8.1
transitivePeerDependencies:
- supports-color
- '@babel/eslint-parser@7.28.5(@babel/core@7.28.5)(eslint@8.57.1)':
+ '@azure/core-http-compat@2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.22.2)':
dependencies:
- '@babel/core': 7.28.5
- '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-client': 1.10.1
+ '@azure/core-rest-pipeline': 1.22.2
+
+ '@azure/core-lro@2.7.2':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-util': 1.13.1
+ '@azure/logger': 1.3.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/core-paging@1.6.2':
+ dependencies:
+ tslib: 2.8.1
+
+ '@azure/core-rest-pipeline@1.22.2':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-tracing': 1.3.1
+ '@azure/core-util': 1.13.1
+ '@azure/logger': 1.3.0
+ '@typespec/ts-http-runtime': 0.3.3
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/core-tracing@1.3.1':
+ dependencies:
+ tslib: 2.8.1
+
+ '@azure/core-util@1.13.1':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@typespec/ts-http-runtime': 0.3.3
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/identity@4.13.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-client': 1.10.1
+ '@azure/core-rest-pipeline': 1.22.2
+ '@azure/core-tracing': 1.3.1
+ '@azure/core-util': 1.13.1
+ '@azure/logger': 1.3.0
+ '@azure/msal-browser': 4.28.2
+ '@azure/msal-node': 3.8.7
+ open: 10.2.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/keyvault-common@2.0.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-client': 1.10.1
+ '@azure/core-rest-pipeline': 1.22.2
+ '@azure/core-tracing': 1.3.1
+ '@azure/core-util': 1.13.1
+ '@azure/logger': 1.3.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/keyvault-keys@4.10.0(@azure/core-client@1.10.1)':
+ dependencies:
+ '@azure-rest/core-client': 2.5.1
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.22.2)
+ '@azure/core-lro': 2.7.2
+ '@azure/core-paging': 1.6.2
+ '@azure/core-rest-pipeline': 1.22.2
+ '@azure/core-tracing': 1.3.1
+ '@azure/core-util': 1.13.1
+ '@azure/keyvault-common': 2.0.0
+ '@azure/logger': 1.3.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - '@azure/core-client'
+ - supports-color
+
+ '@azure/logger@1.3.0':
+ dependencies:
+ '@typespec/ts-http-runtime': 0.3.3
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/msal-browser@4.28.2':
+ dependencies:
+ '@azure/msal-common': 15.14.2
+
+ '@azure/msal-common@15.14.2': {}
+
+ '@azure/msal-node@3.8.7':
+ dependencies:
+ '@azure/msal-common': 15.14.2
+ jsonwebtoken: 9.0.3
+ uuid: 8.3.2
+
+ '@babel/code-frame@7.10.4':
+ dependencies:
+ '@babel/highlight': 7.25.9
+
+ '@babel/code-frame@7.29.0':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.29.0': {}
+
+ '@babel/core@7.29.0':
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helpers': 7.28.6
+ '@babel/parser': 7.29.0
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3(supports-color@9.4.0)
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/eslint-parser@7.28.6(@babel/core@7.29.0)(eslint@8.57.1)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
eslint: 8.57.1
eslint-visitor-keys: 2.1.0
semver: 6.3.1
- '@babel/generator@7.28.5':
+ '@babel/generator@7.29.1':
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.27.3':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
- '@babel/helper-compilation-targets@7.27.2':
+ '@babel/helper-compilation-targets@7.28.6':
dependencies:
- '@babel/compat-data': 7.28.5
+ '@babel/compat-data': 7.29.0
'@babel/helper-validator-option': 7.27.1
- browserslist: 4.28.0
+ browserslist: 4.28.1
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)':
+ '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-member-expression-to-functions': 7.28.5
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
+ '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0)
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/traverse': 7.28.5
+ '@babel/traverse': 7.29.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)':
+ '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
regexpu-core: 6.4.0
semver: 6.3.1
- '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)':
+ '@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
debug: 4.4.3(supports-color@9.4.0)
lodash.debounce: 4.0.8
resolve: 1.22.11
@@ -8478,55 +6335,55 @@ snapshots:
'@babel/helper-member-expression-to-functions@7.28.5':
dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-imports@7.27.1':
+ '@babel/helper-module-imports@7.28.6':
dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
+ '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-imports': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-module-imports': 7.28.6
'@babel/helper-validator-identifier': 7.28.5
- '@babel/traverse': 7.28.5
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helper-optimise-call-expression@7.27.1':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
- '@babel/helper-plugin-utils@7.27.1': {}
+ '@babel/helper-plugin-utils@7.28.6': {}
- '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)':
+ '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-wrap-function': 7.28.3
- '@babel/traverse': 7.28.5
+ '@babel/helper-wrap-function': 7.28.6
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)':
+ '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-member-expression-to-functions': 7.28.5
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/traverse': 7.28.5
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
@@ -8536,18 +6393,18 @@ snapshots:
'@babel/helper-validator-option@7.27.1': {}
- '@babel/helper-wrap-function@7.28.3':
+ '@babel/helper-wrap-function@7.28.6':
dependencies:
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/helpers@7.28.4':
+ '@babel/helpers@7.28.6':
dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
'@babel/highlight@7.25.9':
dependencies:
@@ -8556,735 +6413,861 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
- '@babel/parser@7.28.5':
+ '@babel/parser@7.29.0':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5)
+ '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.5)':
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.5)':
+ '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)':
+ '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
- '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-export-default-from@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)':
+ '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5)
- '@babel/traverse': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0)
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)':
+ '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.5)':
+ '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-classes@7.28.4(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-compilation-targets': 7.28.6
'@babel/helper-globals': 7.28.0
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
- '@babel/traverse': 7.28.5
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0)
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/template': 7.27.2
+ '@babel/core': 7.29.0
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-globals': 7.28.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0)
+ '@babel/traverse': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
- '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/template': 7.28.6
+
+ '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.5)':
+ '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-exponentiation-operator@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0)
- '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-validator-identifier': 7.28.5
- '@babel/traverse': 7.28.5
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
+
+ '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.5)':
+ '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5)
- '@babel/traverse': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0)
+ '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0)
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)':
+ '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.5)':
+ '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
- '@babel/types': 7.28.5
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.5)':
+ '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-runtime@7.29.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-plugin-utils': 7.27.1
- babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5)
- babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5)
- babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
+ babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0)
+ babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0)
+ babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/preset-env@7.28.5(@babel/core@7.28.5)':
+ '@babel/preset-env@7.29.0(@babel/core@7.29.0)':
dependencies:
- '@babel/compat-data': 7.28.5
- '@babel/core': 7.28.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/compat-data': 7.29.0
+ '@babel/core': 7.29.0
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-validator-option': 7.27.1
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.5)
- '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)
- '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5)
- '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5)
- '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5)
- '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5)
- '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.5)
- '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5)
- '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5)
- '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5)
- '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5)
- babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5)
- babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5)
- babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5)
- core-js-compat: 3.47.0
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)
+ '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0)
+ '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0)
+ '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0)
+ babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0)
+ babel-plugin-polyfill-corejs3: 0.14.0(@babel/core@7.29.0)
+ babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0)
+ core-js-compat: 3.48.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)':
+ '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/types': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/types': 7.29.0
esutils: 2.0.3
- '@babel/preset-react@7.28.5(@babel/core@7.28.5)':
+ '@babel/preset-react@7.28.5(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-validator-option': 7.27.1
- '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.5)
- '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)':
+ '@babel/preset-typescript@7.27.1(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-validator-option': 7.27.1
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/runtime@7.28.4': {}
+ '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-validator-option': 7.27.1
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0)
+ transitivePeerDependencies:
+ - supports-color
- '@babel/template@7.27.2':
+ '@babel/runtime@7.28.6': {}
+
+ '@babel/template@7.28.6':
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/code-frame': 7.29.0
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
- '@babel/traverse@7.28.5':
+ '@babel/traverse@7.29.0':
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.5
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
'@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
debug: 4.4.3(supports-color@9.4.0)
transitivePeerDependencies:
- supports-color
- '@babel/types@7.28.5':
+ '@babel/types@7.29.0':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
- '@callstack/react-theme-provider@3.0.9(react@19.1.0)':
+ '@bcoe/v8-coverage@0.2.3': {}
+
+ '@callstack/react-theme-provider@3.0.9(react@19.1.4)':
dependencies:
deepmerge: 3.3.0
hoist-non-react-statics: 3.3.2
- react: 19.1.0
+ react: 19.1.4
'@cd-z/epub-constructor@3.0.3':
dependencies:
- sanitize-html: 2.17.0
+ sanitize-html: 2.17.1
- '@cd-z/react-native-epub-creator@3.0.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@cd-z/react-native-epub-creator@3.0.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
'@cd-z/epub-constructor': 3.0.3
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-file-access: 3.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-saf-x: 2.2.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-zip-archive: 6.1.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-file-access: 3.2.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-saf-x: 2.2.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-zip-archive: 6.1.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+
+ '@drizzle-team/brocli@0.11.0': {}
'@egjs/hammerjs@2.0.17':
dependencies:
'@types/hammerjs': 2.0.46
- '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)':
+ '@esbuild/aix-ppc64@0.25.12':
+ optional: true
+
+ '@esbuild/android-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/android-arm@0.25.12':
+ optional: true
+
+ '@esbuild/android-x64@0.25.12':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/darwin-x64@0.25.12':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-arm@0.25.12':
+ optional: true
+
+ '@esbuild/linux-ia32@0.25.12':
+ optional: true
+
+ '@esbuild/linux-loong64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.25.12':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-s390x@0.25.12':
+ optional: true
+
+ '@esbuild/linux-x64@0.25.12':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.25.12':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.25.12':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/sunos-x64@0.25.12':
+ optional: true
+
+ '@esbuild/win32-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/win32-ia32@0.25.12':
+ optional: true
+
+ '@esbuild/win32-x64@0.25.12':
+ optional: true
+
+ '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)':
dependencies:
eslint: 8.57.1
eslint-visitor-keys: 3.4.3
@@ -9307,27 +7290,26 @@ snapshots:
'@eslint/js@8.57.1': {}
- '@expo/cli@54.0.16(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))':
+ '@expo/cli@54.0.23(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))':
dependencies:
'@0no-co/graphql.web': 1.2.0
- '@expo/code-signing-certificates': 0.0.5
- '@expo/config': 12.0.10
- '@expo/config-plugins': 54.0.2
- '@expo/devcert': 1.2.0
- '@expo/env': 2.0.7
- '@expo/image-utils': 0.8.7
- '@expo/json-file': 10.0.7
- '@expo/mcp-tunnel': 0.1.0
- '@expo/metro': 54.1.0
- '@expo/metro-config': 54.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))
- '@expo/osascript': 2.3.7
- '@expo/package-manager': 1.9.8
- '@expo/plist': 0.4.7
- '@expo/prebuild-config': 54.0.6(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))
- '@expo/schema-utils': 0.1.7
+ '@expo/code-signing-certificates': 0.0.6
+ '@expo/config': 12.0.13
+ '@expo/config-plugins': 54.0.4
+ '@expo/devcert': 1.2.1
+ '@expo/env': 2.0.8
+ '@expo/image-utils': 0.8.8
+ '@expo/json-file': 10.0.8
+ '@expo/metro': 54.2.0
+ '@expo/metro-config': 54.0.14(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))
+ '@expo/osascript': 2.3.8
+ '@expo/package-manager': 1.9.10
+ '@expo/plist': 0.4.8
+ '@expo/prebuild-config': 54.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))
+ '@expo/schema-utils': 0.1.8
'@expo/spawn-async': 1.7.2
'@expo/ws-tunnel': 1.0.6
- '@expo/xcpretty': 4.3.2
+ '@expo/xcpretty': 4.4.0
'@react-native/dev-middleware': 0.81.5
'@urql/core': 5.2.0
'@urql/exchange-retry': 1.3.2(@urql/core@5.2.0)
@@ -9342,14 +7324,14 @@ snapshots:
connect: 3.7.0
debug: 4.4.3(supports-color@9.4.0)
env-editor: 0.4.2
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- expo-server: 1.0.4
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ expo-server: 1.0.5
freeport-async: 2.0.0
getenv: 2.0.0
- glob: 10.5.0
+ glob: 13.0.5
lan-network: 0.1.7
minimatch: 9.0.5
- node-forge: 1.3.2
+ node-forge: 1.3.3
npm-package-arg: 11.0.3
ora: 3.4.0
picomatch: 3.0.1
@@ -9363,43 +7345,41 @@ snapshots:
resolve: 1.22.11
resolve-from: 5.0.0
resolve.exports: 2.0.3
- semver: 7.7.3
- send: 0.19.1
+ semver: 7.7.4
+ send: 0.19.2
slugify: 1.6.6
source-map-support: 0.5.21
stacktrace-parser: 0.1.11
structured-headers: 0.4.1
- tar: 7.5.2
+ tar: 7.5.9
terminal-link: 2.1.1
- undici: 6.22.0
+ undici: 6.23.0
wrap-ansi: 7.0.0
- ws: 8.18.3
+ ws: 8.19.0
optionalDependencies:
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
transitivePeerDependencies:
- - '@modelcontextprotocol/sdk'
- bufferutil
- graphql
- supports-color
- utf-8-validate
- '@expo/code-signing-certificates@0.0.5':
+ '@expo/code-signing-certificates@0.0.6':
dependencies:
- node-forge: 1.3.2
- nullthrows: 1.1.1
+ node-forge: 1.3.3
- '@expo/config-plugins@54.0.2':
+ '@expo/config-plugins@54.0.4':
dependencies:
- '@expo/config-types': 54.0.8
- '@expo/json-file': 10.0.7
- '@expo/plist': 0.4.7
+ '@expo/config-types': 54.0.10
+ '@expo/json-file': 10.0.8
+ '@expo/plist': 0.4.8
'@expo/sdk-runtime-versions': 1.0.0
chalk: 4.1.2
debug: 4.4.3(supports-color@9.4.0)
getenv: 2.0.0
- glob: 10.5.0
+ glob: 13.0.5
resolve-from: 5.0.0
- semver: 7.7.3
+ semver: 7.7.4
slash: 3.0.0
slugify: 1.6.6
xcode: 3.0.1
@@ -9407,42 +7387,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@expo/config-types@54.0.8': {}
+ '@expo/config-types@54.0.10': {}
- '@expo/config@12.0.10':
+ '@expo/config@12.0.13':
dependencies:
'@babel/code-frame': 7.10.4
- '@expo/config-plugins': 54.0.2
- '@expo/config-types': 54.0.8
- '@expo/json-file': 10.0.7
+ '@expo/config-plugins': 54.0.4
+ '@expo/config-types': 54.0.10
+ '@expo/json-file': 10.0.8
deepmerge: 4.3.1
getenv: 2.0.0
- glob: 10.5.0
+ glob: 13.0.5
require-from-string: 2.0.2
resolve-from: 5.0.0
- resolve-workspace-root: 2.0.0
- semver: 7.7.3
+ resolve-workspace-root: 2.0.1
+ semver: 7.7.4
slugify: 1.6.6
- sucrase: 3.35.0
+ sucrase: 3.35.1
transitivePeerDependencies:
- supports-color
- '@expo/devcert@1.2.0':
+ '@expo/devcert@1.2.1':
dependencies:
'@expo/sudo-prompt': 9.3.2
debug: 3.2.7
- glob: 10.5.0
transitivePeerDependencies:
- supports-color
- '@expo/devtools@0.1.7(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/devtools@0.1.8(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
chalk: 4.1.2
optionalDependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- '@expo/env@2.0.7':
+ '@expo/env@2.0.8':
dependencies:
chalk: 4.1.2
debug: 4.4.3(supports-color@9.4.0)
@@ -9452,23 +7431,23 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@expo/fingerprint@0.15.3':
+ '@expo/fingerprint@0.15.4':
dependencies:
'@expo/spawn-async': 1.7.2
arg: 5.0.2
chalk: 4.1.2
debug: 4.4.3(supports-color@9.4.0)
getenv: 2.0.0
- glob: 10.5.0
+ glob: 13.0.5
ignore: 5.3.2
minimatch: 9.0.5
p-limit: 3.1.0
resolve-from: 5.0.0
- semver: 7.7.3
+ semver: 7.7.4
transitivePeerDependencies:
- supports-color
- '@expo/image-utils@0.8.7':
+ '@expo/image-utils@0.8.8':
dependencies:
'@expo/spawn-async': 1.7.2
chalk: 4.1.2
@@ -9477,110 +7456,103 @@ snapshots:
parse-png: 2.1.0
resolve-from: 5.0.0
resolve-global: 1.0.0
- semver: 7.7.3
+ semver: 7.7.4
temp-dir: 2.0.0
unique-string: 2.0.0
- '@expo/json-file@10.0.7':
+ '@expo/json-file@10.0.8':
dependencies:
'@babel/code-frame': 7.10.4
json5: 2.2.3
- '@expo/mcp-tunnel@0.1.0':
- dependencies:
- ws: 8.18.3
- zod: 3.25.76
- zod-to-json-schema: 3.25.0(zod@3.25.76)
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
-
- '@expo/metro-config@54.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))':
+ '@expo/metro-config@54.0.14(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))':
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/core': 7.28.5
- '@babel/generator': 7.28.5
- '@expo/config': 12.0.10
- '@expo/env': 2.0.7
- '@expo/json-file': 10.0.7
- '@expo/metro': 54.1.0
+ '@babel/code-frame': 7.29.0
+ '@babel/core': 7.29.0
+ '@babel/generator': 7.29.1
+ '@expo/config': 12.0.13
+ '@expo/env': 2.0.8
+ '@expo/json-file': 10.0.8
+ '@expo/metro': 54.2.0
'@expo/spawn-async': 1.7.2
- browserslist: 4.28.0
+ browserslist: 4.28.1
chalk: 4.1.2
debug: 4.4.3(supports-color@9.4.0)
dotenv: 16.4.7
dotenv-expand: 11.0.7
getenv: 2.0.0
- glob: 10.5.0
+ glob: 13.0.5
hermes-parser: 0.29.1
jsc-safe-url: 0.2.4
- lightningcss: 1.30.2
+ lightningcss: 1.31.1
minimatch: 9.0.5
postcss: 8.4.49
resolve-from: 5.0.0
optionalDependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@expo/metro@54.1.0':
- dependencies:
- metro: 0.83.2
- metro-babel-transformer: 0.83.2
- metro-cache: 0.83.2
- metro-cache-key: 0.83.2
- metro-config: 0.83.2
- metro-core: 0.83.2
- metro-file-map: 0.83.2
- metro-resolver: 0.83.2
- metro-runtime: 0.83.2
- metro-source-map: 0.83.2
- metro-transform-plugins: 0.83.2
- metro-transform-worker: 0.83.2
+ '@expo/metro@54.2.0':
+ dependencies:
+ metro: 0.83.3
+ metro-babel-transformer: 0.83.3
+ metro-cache: 0.83.3
+ metro-cache-key: 0.83.3
+ metro-config: 0.83.3
+ metro-core: 0.83.3
+ metro-file-map: 0.83.3
+ metro-minify-terser: 0.83.3
+ metro-resolver: 0.83.3
+ metro-runtime: 0.83.3
+ metro-source-map: 0.83.3
+ metro-symbolicate: 0.83.3
+ metro-transform-plugins: 0.83.3
+ metro-transform-worker: 0.83.3
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@expo/osascript@2.3.7':
+ '@expo/osascript@2.3.8':
dependencies:
'@expo/spawn-async': 1.7.2
exec-async: 2.2.0
- '@expo/package-manager@1.9.8':
+ '@expo/package-manager@1.9.10':
dependencies:
- '@expo/json-file': 10.0.7
+ '@expo/json-file': 10.0.8
'@expo/spawn-async': 1.7.2
chalk: 4.1.2
npm-package-arg: 11.0.3
ora: 3.4.0
- resolve-workspace-root: 2.0.0
+ resolve-workspace-root: 2.0.1
- '@expo/plist@0.4.7':
+ '@expo/plist@0.4.8':
dependencies:
'@xmldom/xmldom': 0.8.11
base64-js: 1.5.1
xmlbuilder: 15.1.1
- '@expo/prebuild-config@54.0.6(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))':
+ '@expo/prebuild-config@54.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))':
dependencies:
- '@expo/config': 12.0.10
- '@expo/config-plugins': 54.0.2
- '@expo/config-types': 54.0.8
- '@expo/image-utils': 0.8.7
- '@expo/json-file': 10.0.7
+ '@expo/config': 12.0.13
+ '@expo/config-plugins': 54.0.4
+ '@expo/config-types': 54.0.10
+ '@expo/image-utils': 0.8.8
+ '@expo/json-file': 10.0.8
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3(supports-color@9.4.0)
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
resolve-from: 5.0.0
- semver: 7.7.3
+ semver: 7.7.4
xml2js: 0.6.0
transitivePeerDependencies:
- supports-color
- '@expo/schema-utils@0.1.7': {}
+ '@expo/schema-utils@0.1.8': {}
'@expo/sdk-runtime-versions@1.0.0': {}
@@ -9590,37 +7562,36 @@ snapshots:
'@expo/sudo-prompt@9.3.2': {}
- '@expo/vector-icons@15.0.3(expo-font@14.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/vector-icons@15.0.3(expo-font@14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- expo-font: 14.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ expo-font: 14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
'@expo/ws-tunnel@1.0.6': {}
- '@expo/xcpretty@4.3.2':
+ '@expo/xcpretty@4.4.0':
dependencies:
- '@babel/code-frame': 7.10.4
+ '@babel/code-frame': 7.29.0
chalk: 4.1.2
- find-up: 5.0.0
js-yaml: 4.1.1
- '@gorhom/bottom-sheet@5.2.6(@types/react@19.1.17)(react-native-gesture-handler@2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@gorhom/bottom-sheet@5.2.8(@types/react@19.1.17)(react-native-gesture-handler@2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-reanimated@4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- '@gorhom/portal': 1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@gorhom/portal': 1.0.14(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
invariant: 2.2.4
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-gesture-handler: 2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-gesture-handler: 2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-reanimated: 4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
optionalDependencies:
'@types/react': 19.1.17
- '@gorhom/portal@1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@gorhom/portal@1.0.14(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
nanoid: 3.3.11
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
'@hapi/hoek@9.3.0': {}
@@ -9642,15 +7613,6 @@ snapshots:
'@ide/backoff@1.0.0': {}
- '@isaacs/cliui@8.0.2':
- dependencies:
- string-width: 5.1.2
- string-width-cjs: string-width@4.2.3
- strip-ansi: 7.1.2
- strip-ansi-cjs: strip-ansi@6.0.1
- wrap-ansi: 8.1.0
- wrap-ansi-cjs: wrap-ansi@7.0.0
-
'@isaacs/fs-minipass@4.0.1':
dependencies:
minipass: 7.1.2
@@ -9667,6 +7629,50 @@ snapshots:
'@istanbuljs/schema@0.1.3': {}
+ '@jest/console@29.7.0':
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 25.2.3
+ chalk: 4.1.2
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+
+ '@jest/core@29.7.0':
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/reporters': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 25.2.3
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-changed-files: 29.7.0
+ jest-config: 29.7.0(@types/node@25.2.3)
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-resolve-dependencies: 29.7.0
+ jest-runner: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ jest-watcher: 29.7.0
+ micromatch: 4.0.8
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
'@jest/create-cache-key-function@29.7.0':
dependencies:
'@jest/types': 29.6.3
@@ -9675,25 +7681,94 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
jest-mock: 29.7.0
+ '@jest/expect-utils@29.7.0':
+ dependencies:
+ jest-get-type: 29.6.3
+
+ '@jest/expect@29.7.0':
+ dependencies:
+ expect: 29.7.0
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
'@jest/fake-timers@29.7.0':
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
+ '@jest/globals@29.7.0':
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/types': 29.6.3
+ jest-mock: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@jest/reporters@29.7.0':
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.31
+ '@types/node': 25.2.3
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.3
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ istanbul-lib-coverage: 3.2.2
+ istanbul-lib-instrument: 6.0.3
+ istanbul-lib-report: 3.0.1
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.2.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ v8-to-istanbul: 9.3.0
+ transitivePeerDependencies:
+ - supports-color
+
'@jest/schemas@29.6.3':
dependencies:
- '@sinclair/typebox': 0.27.8
+ '@sinclair/typebox': 0.27.10
+
+ '@jest/source-map@29.6.3':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ callsites: 3.1.0
+ graceful-fs: 4.2.11
+
+ '@jest/test-result@29.7.0':
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ collect-v8-coverage: 1.0.3
+
+ '@jest/test-sequencer@29.7.0':
+ dependencies:
+ '@jest/test-result': 29.7.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ slash: 3.0.0
'@jest/transform@29.7.0':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.31
babel-plugin-istanbul: 6.1.1
@@ -9716,7 +7791,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
'@types/yargs': 17.0.35
chalk: 4.1.2
@@ -9744,11 +7819,17 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
- '@legendapp/list@2.0.16(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@js-joda/core@5.7.0': {}
+
+ '@js-temporal/polyfill@0.5.1':
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- use-sync-external-store: 1.6.0(react@19.1.0)
+ jsbi: 4.3.2
+
+ '@legendapp/list@2.0.19(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
+ dependencies:
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ use-sync-external-store: 1.6.0(react@19.1.4)
'@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1':
dependencies:
@@ -9766,10 +7847,12 @@ snapshots:
'@nodelib/fs.walk@1.2.8':
dependencies:
'@nodelib/fs.scandir': 2.1.5
- fastq: 1.19.1
+ fastq: 1.20.1
- '@pkgjs/parseargs@0.11.0':
- optional: true
+ '@op-engineering/op-sqlite@15.2.5(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
+ dependencies:
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
'@protobufjs/aspromise@1.1.2': {}
@@ -9794,252 +7877,321 @@ snapshots:
'@protobufjs/utf8@1.1.0': {}
- '@react-native-community/cli-clean@20.0.2':
+ '@react-native-community/cli-clean@20.1.1':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-tools': 20.1.1
execa: 5.1.1
fast-glob: 3.3.3
+ picocolors: 1.1.1
- '@react-native-community/cli-config-android@20.0.2':
+ '@react-native-community/cli-config-android@20.1.1':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-tools': 20.1.1
fast-glob: 3.3.3
fast-xml-parser: 4.5.3
+ picocolors: 1.1.1
- '@react-native-community/cli-config-apple@20.0.2':
+ '@react-native-community/cli-config-apple@20.1.1':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-tools': 20.1.1
execa: 5.1.1
fast-glob: 3.3.3
+ picocolors: 1.1.1
- '@react-native-community/cli-config@20.0.2(typescript@5.9.3)':
+ '@react-native-community/cli-config@20.1.1(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-tools': 20.1.1
cosmiconfig: 9.0.0(typescript@5.9.3)
deepmerge: 4.3.1
fast-glob: 3.3.3
joi: 17.13.3
+ picocolors: 1.1.1
transitivePeerDependencies:
- typescript
- '@react-native-community/cli-doctor@20.0.2(typescript@5.9.3)':
+ '@react-native-community/cli-doctor@20.1.1(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-config': 20.0.2(typescript@5.9.3)
- '@react-native-community/cli-platform-android': 20.0.2
- '@react-native-community/cli-platform-apple': 20.0.2
- '@react-native-community/cli-platform-ios': 20.0.2
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-config': 20.1.1(typescript@5.9.3)
+ '@react-native-community/cli-platform-android': 20.1.1
+ '@react-native-community/cli-platform-apple': 20.1.1
+ '@react-native-community/cli-platform-ios': 20.1.1
+ '@react-native-community/cli-tools': 20.1.1
command-exists: 1.2.9
deepmerge: 4.3.1
- envinfo: 7.20.0
+ envinfo: 7.21.0
execa: 5.1.1
node-stream-zip: 1.15.0
ora: 5.4.1
- semver: 7.7.3
+ picocolors: 1.1.1
+ semver: 7.7.4
wcwidth: 1.0.1
- yaml: 2.8.1
+ yaml: 2.8.2
transitivePeerDependencies:
- typescript
- '@react-native-community/cli-platform-android@20.0.2':
+ '@react-native-community/cli-platform-android@20.1.1':
dependencies:
- '@react-native-community/cli-config-android': 20.0.2
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-config-android': 20.1.1
+ '@react-native-community/cli-tools': 20.1.1
execa: 5.1.1
logkitty: 0.7.1
+ picocolors: 1.1.1
- '@react-native-community/cli-platform-apple@20.0.2':
+ '@react-native-community/cli-platform-apple@20.1.1':
dependencies:
- '@react-native-community/cli-config-apple': 20.0.2
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-config-apple': 20.1.1
+ '@react-native-community/cli-tools': 20.1.1
execa: 5.1.1
fast-xml-parser: 4.5.3
+ picocolors: 1.1.1
- '@react-native-community/cli-platform-ios@20.0.2':
+ '@react-native-community/cli-platform-ios@20.1.1':
dependencies:
- '@react-native-community/cli-platform-apple': 20.0.2
+ '@react-native-community/cli-platform-apple': 20.1.1
- '@react-native-community/cli-server-api@20.0.2':
+ '@react-native-community/cli-server-api@20.1.1':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- body-parser: 1.20.3
+ '@react-native-community/cli-tools': 20.1.1
+ body-parser: 1.20.4
compression: 1.8.1
connect: 3.7.0
- errorhandler: 1.5.1
+ errorhandler: 1.5.2
nocache: 3.0.4
open: 6.4.0
pretty-format: 29.7.0
- serve-static: 1.16.2
+ serve-static: 1.16.3
+ strict-url-sanitise: 0.0.1
ws: 6.2.3
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@react-native-community/cli-tools@20.0.2':
+ '@react-native-community/cli-tools@20.1.1':
dependencies:
- '@vscode/sudo-prompt': 9.3.1
+ '@vscode/sudo-prompt': 9.3.2
appdirsjs: 1.2.7
- chalk: 4.1.2
execa: 5.1.1
find-up: 5.0.0
- launch-editor: 2.12.0
+ launch-editor: 2.13.0
mime: 2.6.0
ora: 5.4.1
+ picocolors: 1.1.1
prompts: 2.4.2
- semver: 7.7.3
+ semver: 7.7.4
- '@react-native-community/cli-types@20.0.2':
+ '@react-native-community/cli-types@20.1.1':
dependencies:
joi: 17.13.3
- '@react-native-community/cli@20.0.2(typescript@5.9.3)':
+ '@react-native-community/cli@20.1.1(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-clean': 20.0.2
- '@react-native-community/cli-config': 20.0.2(typescript@5.9.3)
- '@react-native-community/cli-doctor': 20.0.2(typescript@5.9.3)
- '@react-native-community/cli-server-api': 20.0.2
- '@react-native-community/cli-tools': 20.0.2
- '@react-native-community/cli-types': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-clean': 20.1.1
+ '@react-native-community/cli-config': 20.1.1(typescript@5.9.3)
+ '@react-native-community/cli-doctor': 20.1.1(typescript@5.9.3)
+ '@react-native-community/cli-server-api': 20.1.1
+ '@react-native-community/cli-tools': 20.1.1
+ '@react-native-community/cli-types': 20.1.1
commander: 9.5.0
deepmerge: 4.3.1
execa: 5.1.1
find-up: 5.0.0
fs-extra: 8.1.0
graceful-fs: 4.2.11
+ picocolors: 1.1.1
prompts: 2.4.2
- semver: 7.7.3
+ semver: 7.7.4
transitivePeerDependencies:
- bufferutil
- supports-color
- typescript
- utf-8-validate
- '@react-native-community/slider@5.1.1': {}
+ '@react-native-community/slider@5.1.2': {}
- '@react-native-cookies/cookies@6.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))':
+ '@react-native-cookies/cookies@6.2.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))':
dependencies:
invariant: 2.2.4
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- '@react-native-documents/picker@10.1.7(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-native-documents/picker@10.1.7(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- '@react-native-google-signin/google-signin@16.0.0(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-native-google-signin/google-signin@16.1.1(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
optionalDependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
- '@react-native-vector-icons/common@12.4.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-native-vector-icons/common@12.4.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
find-up: 7.0.0
picocolors: 1.1.1
plist: 3.1.0
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- '@react-native-vector-icons/material-design-icons@12.4.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-native-vector-icons/material-design-icons@12.4.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- '@react-native-vector-icons/common': 12.4.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ '@react-native-vector-icons/common': 12.4.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
transitivePeerDependencies:
- '@react-native-vector-icons/get-image'
- '@react-native/assets-registry@0.81.5': {}
+ '@react-native/assets-registry@0.81.6': {}
+
+ '@react-native/babel-plugin-codegen@0.81.5(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/traverse': 7.29.0
+ '@react-native/codegen': 0.81.5(@babel/core@7.29.0)
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
- '@react-native/babel-plugin-codegen@0.81.5(@babel/core@7.28.5)':
+ '@react-native/babel-plugin-codegen@0.81.6(@babel/core@7.29.0)':
dependencies:
- '@babel/traverse': 7.28.5
- '@react-native/codegen': 0.81.5(@babel/core@7.28.5)
+ '@babel/traverse': 7.29.0
+ '@react-native/codegen': 0.81.6(@babel/core@7.29.0)
transitivePeerDependencies:
- '@babel/core'
- supports-color
- '@react-native/babel-preset@0.81.5(@babel/core@7.28.5)':
- dependencies:
- '@babel/core': 7.28.5
- '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5)
- '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5)
- '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5)
- '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5)
- '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.5)
- '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5)
- '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/template': 7.27.2
- '@react-native/babel-plugin-codegen': 0.81.5(@babel/core@7.28.5)
+ '@react-native/babel-preset@0.81.5(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0)
+ '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0)
+ '@babel/template': 7.28.6
+ '@react-native/babel-plugin-codegen': 0.81.5(@babel/core@7.29.0)
babel-plugin-syntax-hermes-parser: 0.29.1
- babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.5)
+ babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.0)
react-refresh: 0.14.2
transitivePeerDependencies:
- supports-color
- '@react-native/codegen@0.81.5(@babel/core@7.28.5)':
+ '@react-native/babel-preset@0.81.6(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0)
+ '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0)
+ '@babel/template': 7.28.6
+ '@react-native/babel-plugin-codegen': 0.81.6(@babel/core@7.29.0)
+ babel-plugin-syntax-hermes-parser: 0.29.1
+ babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.0)
+ react-refresh: 0.14.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@react-native/codegen@0.81.5(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/parser': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/parser': 7.29.0
glob: 7.2.3
hermes-parser: 0.29.1
invariant: 2.2.4
nullthrows: 1.1.1
yargs: 17.7.2
- '@react-native/community-cli-plugin@0.81.5(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))':
+ '@react-native/codegen@0.81.6(@babel/core@7.29.0)':
dependencies:
- '@react-native/dev-middleware': 0.81.5
+ '@babel/core': 7.29.0
+ '@babel/parser': 7.29.0
+ glob: 7.2.3
+ hermes-parser: 0.29.1
+ invariant: 2.2.4
+ nullthrows: 1.1.1
+ yargs: 17.7.2
+
+ '@react-native/community-cli-plugin@0.81.6(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))':
+ dependencies:
+ '@react-native/dev-middleware': 0.81.6
debug: 4.4.3(supports-color@9.4.0)
invariant: 2.2.4
metro: 0.83.3
metro-config: 0.83.3
metro-core: 0.83.3
- semver: 7.7.3
+ semver: 7.7.4
optionalDependencies:
- '@react-native-community/cli': 20.0.2(typescript@5.9.3)
- '@react-native/metro-config': 0.81.5(@babel/core@7.28.5)
+ '@react-native-community/cli': 20.1.1(typescript@5.9.3)
+ '@react-native/metro-config': 0.81.6(@babel/core@7.29.0)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -10047,6 +8199,8 @@ snapshots:
'@react-native/debugger-frontend@0.81.5': {}
+ '@react-native/debugger-frontend@0.81.6': {}
+
'@react-native/dev-middleware@0.81.5':
dependencies:
'@isaacs/ttlcache': 1.4.1
@@ -10058,25 +8212,43 @@ snapshots:
invariant: 2.2.4
nullthrows: 1.1.1
open: 7.4.2
- serve-static: 1.16.2
+ serve-static: 1.16.3
ws: 6.2.3
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@react-native/eslint-config@0.81.5(eslint@8.57.1)(prettier@2.8.8)(typescript@5.9.3)':
+ '@react-native/dev-middleware@0.81.6':
dependencies:
- '@babel/core': 7.28.5
- '@babel/eslint-parser': 7.28.5(@babel/core@7.28.5)(eslint@8.57.1)
- '@react-native/eslint-plugin': 0.81.5
+ '@isaacs/ttlcache': 1.4.1
+ '@react-native/debugger-frontend': 0.81.6
+ chrome-launcher: 0.15.2
+ chromium-edge-launcher: 0.2.0
+ connect: 3.7.0
+ debug: 4.4.3(supports-color@9.4.0)
+ invariant: 2.2.4
+ nullthrows: 1.1.1
+ open: 7.4.2
+ serve-static: 1.16.3
+ ws: 6.2.3
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ '@react-native/eslint-config@0.81.6(eslint@8.57.1)(jest@29.7.0(@types/node@25.2.3))(prettier@2.8.8)(typescript@5.9.3)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/eslint-parser': 7.28.6(@babel/core@7.29.0)(eslint@8.57.1)
+ '@react-native/eslint-plugin': 0.81.6
'@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
'@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3)
eslint: 8.57.1
eslint-config-prettier: 8.10.2(eslint@8.57.1)
eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1)
- eslint-plugin-ft-flow: 2.0.3(@babel/eslint-parser@7.28.5(@babel/core@7.28.5)(eslint@8.57.1))(eslint@8.57.1)
- eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
+ eslint-plugin-ft-flow: 2.0.3(@babel/eslint-parser@7.28.6(@babel/core@7.29.0)(eslint@8.57.1))(eslint@8.57.1)
+ eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@25.2.3))(typescript@5.9.3)
eslint-plugin-react: 7.37.5(eslint@8.57.1)
eslint-plugin-react-hooks: 5.2.0(eslint@8.57.1)
eslint-plugin-react-native: 4.1.0(eslint@8.57.1)
@@ -10086,25 +8258,27 @@ snapshots:
- supports-color
- typescript
- '@react-native/eslint-plugin@0.81.5': {}
+ '@react-native/eslint-plugin@0.81.6': {}
- '@react-native/gradle-plugin@0.81.5': {}
+ '@react-native/eslint-plugin@0.83.2': {}
- '@react-native/js-polyfills@0.81.5': {}
+ '@react-native/gradle-plugin@0.81.6': {}
- '@react-native/metro-babel-transformer@0.81.5(@babel/core@7.28.5)':
+ '@react-native/js-polyfills@0.81.6': {}
+
+ '@react-native/metro-babel-transformer@0.81.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@react-native/babel-preset': 0.81.5(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@react-native/babel-preset': 0.81.6(@babel/core@7.29.0)
hermes-parser: 0.29.1
nullthrows: 1.1.1
transitivePeerDependencies:
- supports-color
- '@react-native/metro-config@0.81.5(@babel/core@7.28.5)':
+ '@react-native/metro-config@0.81.6(@babel/core@7.29.0)':
dependencies:
- '@react-native/js-polyfills': 0.81.5
- '@react-native/metro-babel-transformer': 0.81.5(@babel/core@7.28.5)
+ '@react-native/js-polyfills': 0.81.6
+ '@react-native/metro-babel-transformer': 0.81.6(@babel/core@7.29.0)
metro-config: 0.83.3
metro-runtime: 0.83.3
transitivePeerDependencies:
@@ -10115,99 +8289,101 @@ snapshots:
'@react-native/normalize-colors@0.81.5': {}
- '@react-native/typescript-config@0.81.5': {}
+ '@react-native/normalize-colors@0.81.6': {}
+
+ '@react-native/typescript-config@0.81.6': {}
- '@react-native/virtualized-lists@0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-native/virtualized-lists@0.81.6(@types/react@19.1.17)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
invariant: 2.2.4
nullthrows: 1.1.1
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
optionalDependencies:
'@types/react': 19.1.17
- '@react-navigation/bottom-tabs@7.8.6(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/bottom-tabs@7.14.0(@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-screens@4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- '@react-navigation/elements': 2.8.3(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.5(@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ '@react-navigation/native': 7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
color: 4.2.3
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- sf-symbols-typescript: 2.1.0
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-screens: 4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ sf-symbols-typescript: 2.2.0
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@react-navigation/core@7.13.2(react@19.1.0)':
+ '@react-navigation/core@7.14.0(react@19.1.4)':
dependencies:
- '@react-navigation/routers': 7.5.2
+ '@react-navigation/routers': 7.5.3
escape-string-regexp: 4.0.0
fast-deep-equal: 3.1.3
nanoid: 3.3.11
query-string: 7.1.3
- react: 19.1.0
- react-is: 19.2.0
- use-latest-callback: 0.2.6(react@19.1.0)
- use-sync-external-store: 1.6.0(react@19.1.0)
+ react: 19.1.4
+ react-is: 19.2.4
+ use-latest-callback: 0.2.6(react@19.1.4)
+ use-sync-external-store: 1.6.0(react@19.1.4)
- '@react-navigation/elements@2.8.3(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/elements@2.9.5(@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- '@react-navigation/native': 7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
color: 4.2.3
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- use-latest-callback: 0.2.6(react@19.1.0)
- use-sync-external-store: 1.6.0(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ use-latest-callback: 0.2.6(react@19.1.4)
+ use-sync-external-store: 1.6.0(react@19.1.4)
- '@react-navigation/native-stack@7.8.0(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native-stack@7.13.0(@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-screens@4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- '@react-navigation/elements': 2.8.3(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.5(@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ '@react-navigation/native': 7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
color: 4.2.3
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- sf-symbols-typescript: 2.1.0
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-screens: 4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ sf-symbols-typescript: 2.2.0
warn-once: 0.1.1
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- '@react-navigation/core': 7.13.2(react@19.1.0)
+ '@react-navigation/core': 7.14.0(react@19.1.4)
escape-string-regexp: 4.0.0
fast-deep-equal: 3.1.3
nanoid: 3.3.11
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- use-latest-callback: 0.2.6(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ use-latest-callback: 0.2.6(react@19.1.4)
- '@react-navigation/routers@7.5.2':
+ '@react-navigation/routers@7.5.3':
dependencies:
nanoid: 3.3.11
- '@react-navigation/stack@7.6.7(fvtyc5glo6n4aaddag5swr7mca)':
+ '@react-navigation/stack@7.7.2(ab852612dcbc4f4eaa1a5a4d46e7f077)':
dependencies:
- '@react-navigation/elements': 2.8.3(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.5(@react-navigation/native@7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ '@react-navigation/native': 7.1.28(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
color: 4.2.3
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-gesture-handler: 2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- use-latest-callback: 0.2.6(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-gesture-handler: 2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-screens: 4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ use-latest-callback: 0.2.6(react@19.1.4)
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@shopify/flash-list@2.0.2(@babel/runtime@7.28.4)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@shopify/flash-list@2.0.2(@babel/runtime@7.28.6)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)':
dependencies:
- '@babel/runtime': 7.28.4
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ '@babel/runtime': 7.28.6
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
tslib: 2.8.1
'@sideway/address@4.1.5':
@@ -10218,7 +8394,7 @@ snapshots:
'@sideway/pinpoint@2.0.0': {}
- '@sinclair/typebox@0.27.8': {}
+ '@sinclair/typebox@0.27.10': {}
'@sinonjs/commons@3.0.1':
dependencies:
@@ -10228,26 +8404,32 @@ snapshots:
dependencies:
'@sinonjs/commons': 3.0.1
+ '@tediousjs/connection-string@0.5.0': {}
+
'@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
'@types/babel__generator': 7.27.0
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.28.0
'@types/babel__generator@7.27.0':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
'@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
'@types/babel__traverse@7.28.0':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
+
+ '@types/better-sqlite3@7.6.13':
+ dependencies:
+ '@types/node': 25.2.3
'@types/color-convert@2.0.4':
dependencies:
@@ -10261,7 +8443,7 @@ snapshots:
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
'@types/hammerjs@2.0.46': {}
@@ -10275,15 +8457,29 @@ snapshots:
dependencies:
'@types/istanbul-lib-report': 3.0.3
+ '@types/jest@29.5.14':
+ dependencies:
+ expect: 29.7.0
+ pretty-format: 29.7.0
+
'@types/json-schema@7.0.15': {}
'@types/lodash-es@4.17.12':
dependencies:
- '@types/lodash': 4.17.21
+ '@types/lodash': 4.17.23
+
+ '@types/lodash@4.17.23': {}
- '@types/lodash@4.17.21': {}
+ '@types/mssql@9.1.9(@azure/core-client@1.10.1)':
+ dependencies:
+ '@types/node': 25.2.3
+ tarn: 3.0.2
+ tedious: 19.2.1(@azure/core-client@1.10.1)
+ transitivePeerDependencies:
+ - '@azure/core-client'
+ - supports-color
- '@types/node@24.10.1':
+ '@types/node@25.2.3':
dependencies:
undici-types: 7.16.0
@@ -10291,6 +8487,10 @@ snapshots:
dependencies:
csstype: 3.2.3
+ '@types/readable-stream@4.0.23':
+ dependencies:
+ '@types/node': 25.2.3
+
'@types/sanitize-html@2.16.0':
dependencies:
htmlparser2: 8.0.2
@@ -10323,6 +8523,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+ '@typescript-eslint/parser': 8.56.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.56.0
+ '@typescript-eslint/type-utils': 8.56.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.56.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.56.0
+ eslint: 8.57.1
+ ignore: 7.0.5
+ natural-compare: 1.4.0
+ ts-api-utils: 2.4.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 7.18.0
@@ -10336,6 +8552,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 8.56.0
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.56.0
+ debug: 4.4.3(supports-color@9.4.0)
+ eslint: 8.57.1
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.0
+ debug: 4.4.3(supports-color@9.4.0)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/scope-manager@5.62.0':
dependencies:
'@typescript-eslint/types': 5.62.0
@@ -10346,6 +8583,15 @@ snapshots:
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/visitor-keys': 7.18.0
+ '@typescript-eslint/scope-manager@8.56.0':
+ dependencies:
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/visitor-keys': 8.56.0
+
+ '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)':
+ dependencies:
+ typescript: 5.9.3
+
'@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
@@ -10358,10 +8604,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/type-utils@8.56.0(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.56.0(eslint@8.57.1)(typescript@5.9.3)
+ debug: 4.4.3(supports-color@9.4.0)
+ eslint: 8.57.1
+ ts-api-utils: 2.4.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/types@5.62.0': {}
'@typescript-eslint/types@7.18.0': {}
+ '@typescript-eslint/types@8.56.0': {}
+
'@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 5.62.0
@@ -10369,7 +8629,7 @@ snapshots:
debug: 4.4.3(supports-color@9.4.0)
globby: 11.1.0
is-glob: 4.0.3
- semver: 7.7.3
+ semver: 7.7.4
tsutils: 3.21.0(typescript@5.9.3)
optionalDependencies:
typescript: 5.9.3
@@ -10384,16 +8644,31 @@ snapshots:
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
- semver: 7.7.3
+ semver: 7.7.4
ts-api-utils: 1.4.3(typescript@5.9.3)
optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/visitor-keys': 8.56.0
+ debug: 4.4.3(supports-color@9.4.0)
+ minimatch: 9.0.5
+ semver: 7.7.4
+ tinyglobby: 0.2.15
+ ts-api-utils: 2.4.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
'@types/json-schema': 7.0.15
'@types/semver': 7.7.1
'@typescript-eslint/scope-manager': 5.62.0
@@ -10401,14 +8676,14 @@ snapshots:
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3)
eslint: 8.57.1
eslint-scope: 5.1.1
- semver: 7.7.3
+ semver: 7.7.4
transitivePeerDependencies:
- supports-color
- typescript
'@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
'@typescript-eslint/scope-manager': 7.18.0
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
@@ -10417,6 +8692,17 @@ snapshots:
- supports-color
- typescript
+ '@typescript-eslint/utils@8.56.0(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
+ '@typescript-eslint/scope-manager': 8.56.0
+ '@typescript-eslint/types': 8.56.0
+ '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3)
+ eslint: 8.57.1
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/visitor-keys@5.62.0':
dependencies:
'@typescript-eslint/types': 5.62.0
@@ -10427,6 +8713,19 @@ snapshots:
'@typescript-eslint/types': 7.18.0
eslint-visitor-keys: 3.4.3
+ '@typescript-eslint/visitor-keys@8.56.0':
+ dependencies:
+ '@typescript-eslint/types': 8.56.0
+ eslint-visitor-keys: 5.0.0
+
+ '@typespec/ts-http-runtime@0.3.3':
+ dependencies:
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
'@ungap/structured-clone@1.3.0': {}
'@urql/core@5.2.0':
@@ -10441,7 +8740,7 @@ snapshots:
'@urql/core': 5.2.0
wonka: 6.3.5
- '@vscode/sudo-prompt@9.3.1': {}
+ '@vscode/sudo-prompt@9.3.2': {}
'@xmldom/xmldom@0.8.11': {}
@@ -10531,7 +8830,7 @@ snapshots:
call-bind: 1.0.8
call-bound: 1.0.4
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-object-atoms: 1.1.1
get-intrinsic: 1.3.0
is-string: 1.1.1
@@ -10543,7 +8842,7 @@ snapshots:
dependencies:
call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-errors: 1.3.0
es-object-atoms: 1.1.1
es-shim-unscopables: 1.1.0
@@ -10552,21 +8851,21 @@ snapshots:
dependencies:
call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-shim-unscopables: 1.1.0
array.prototype.flatmap@1.3.3:
dependencies:
call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-shim-unscopables: 1.1.0
array.prototype.tosorted@1.1.4:
dependencies:
call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-errors: 1.3.0
es-shim-unscopables: 1.1.0
@@ -10575,7 +8874,7 @@ snapshots:
array-buffer-byte-length: 1.0.2
call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-errors: 1.3.0
get-intrinsic: 1.3.0
is-array-buffer: 3.0.5
@@ -10602,24 +8901,29 @@ snapshots:
dependencies:
possible-typed-array-names: 1.1.0
- await-lock@2.2.2: {}
+ await-lock@2.2.2:
+ optional: true
- babel-jest@29.7.0(@babel/core@7.28.5):
+ babel-jest@29.7.0(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@jest/transform': 29.7.0
'@types/babel__core': 7.20.5
babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 29.6.3(@babel/core@7.28.5)
+ babel-preset-jest: 29.6.3(@babel/core@7.29.0)
chalk: 4.1.2
graceful-fs: 4.2.11
slash: 3.0.0
transitivePeerDependencies:
- supports-color
+ babel-plugin-inline-import@3.0.0:
+ dependencies:
+ require-resolve: 0.0.2
+
babel-plugin-istanbul@6.1.1:
dependencies:
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-plugin-utils': 7.28.6
'@istanbuljs/load-nyc-config': 1.1.0
'@istanbuljs/schema': 0.1.3
istanbul-lib-instrument: 5.2.1
@@ -10629,8 +8933,8 @@ snapshots:
babel-plugin-jest-hoist@29.6.3:
dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.28.0
@@ -10642,37 +8946,45 @@ snapshots:
reselect: 4.1.8
resolve: 1.22.11
- babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5):
+ babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0):
dependencies:
- '@babel/compat-data': 7.28.5
- '@babel/core': 7.28.5
- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5)
+ '@babel/compat-data': 7.29.0
+ '@babel/core': 7.29.0
+ '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5):
+ babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0):
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0)
+ core-js-compat: 3.48.0
+ transitivePeerDependencies:
+ - supports-color
+
+ babel-plugin-polyfill-corejs3@0.14.0(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5)
- core-js-compat: 3.47.0
+ '@babel/core': 7.29.0
+ '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0)
+ core-js-compat: 3.48.0
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5):
+ babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
babel-plugin-react-compiler@1.0.0:
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
babel-plugin-react-compiler@19.1.0-rc.3:
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
babel-plugin-react-native-web@0.21.2: {}
@@ -10680,103 +8992,121 @@ snapshots:
dependencies:
hermes-parser: 0.29.1
- babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.5):
+ babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.29.0):
dependencies:
- '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- '@babel/core'
- babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5):
- dependencies:
- '@babel/core': 7.28.5
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5)
- '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5)
- '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5)
- '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5)
- '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5)
-
- babel-preset-expo@54.0.7(@babel/core@7.28.5)(@babel/runtime@7.28.4)(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-refresh@0.14.2):
- dependencies:
- '@babel/helper-module-imports': 7.27.1
- '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.5)
- '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5)
- '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5)
- '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5)
- '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5)
- '@babel/preset-react': 7.28.5(@babel/core@7.28.5)
- '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5)
- '@react-native/babel-preset': 0.81.5(@babel/core@7.28.5)
+ babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0):
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0)
+ '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0)
+ '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0)
+
+ babel-preset-expo@54.0.10(@babel/core@7.29.0)(@babel/runtime@7.28.6)(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-refresh@0.14.2):
+ dependencies:
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0)
+ '@babel/preset-react': 7.28.5(@babel/core@7.29.0)
+ '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0)
+ '@react-native/babel-preset': 0.81.5(@babel/core@7.29.0)
babel-plugin-react-compiler: 1.0.0
babel-plugin-react-native-web: 0.21.2
babel-plugin-syntax-hermes-parser: 0.29.1
- babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.5)
+ babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.0)
debug: 4.4.3(supports-color@9.4.0)
react-refresh: 0.14.2
resolve-from: 5.0.0
optionalDependencies:
- '@babel/runtime': 7.28.4
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@babel/runtime': 7.28.6
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
transitivePeerDependencies:
- '@babel/core'
- supports-color
- babel-preset-jest@29.6.3(@babel/core@7.28.5):
+ babel-preset-jest@29.6.3(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
babel-plugin-jest-hoist: 29.6.3
- babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5)
+ babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0)
badgin@1.2.3: {}
balanced-match@1.0.2: {}
+ balanced-match@4.0.3: {}
+
base64-js@1.5.1: {}
- baseline-browser-mapping@2.8.31: {}
+ baseline-browser-mapping@2.9.19: {}
better-opn@3.0.2:
dependencies:
open: 8.4.2
+ better-sqlite3@12.6.2:
+ dependencies:
+ bindings: 1.5.0
+ prebuild-install: 7.1.3
+
big-integer@1.6.52: {}
bignumber.js@9.3.1: {}
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
bl@4.1.0:
dependencies:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
- body-parser@1.20.3:
+ bl@6.1.6:
+ dependencies:
+ '@types/readable-stream': 4.0.23
+ buffer: 6.0.3
+ inherits: 2.0.4
+ readable-stream: 4.7.0
+
+ body-parser@1.20.4:
dependencies:
bytes: 3.1.2
content-type: 1.0.5
debug: 2.6.9
depd: 2.0.0
destroy: 1.2.0
- http-errors: 2.0.0
+ http-errors: 2.0.1
iconv-lite: 0.4.24
on-finished: 2.4.1
- qs: 6.13.0
- raw-body: 2.5.2
+ qs: 6.14.2
+ raw-body: 2.5.3
type-is: 1.6.18
unpipe: 1.0.0
transitivePeerDependencies:
@@ -10805,22 +9135,28 @@ snapshots:
dependencies:
balanced-match: 1.0.2
+ brace-expansion@5.0.2:
+ dependencies:
+ balanced-match: 4.0.3
+
braces@3.0.3:
dependencies:
fill-range: 7.1.1
- browserslist@4.28.0:
+ browserslist@4.28.1:
dependencies:
- baseline-browser-mapping: 2.8.31
- caniuse-lite: 1.0.30001757
- electron-to-chromium: 1.5.260
+ baseline-browser-mapping: 2.9.19
+ caniuse-lite: 1.0.30001770
+ electron-to-chromium: 1.5.286
node-releases: 2.0.27
- update-browserslist-db: 1.1.4(browserslist@4.28.0)
+ update-browserslist-db: 1.2.3(browserslist@4.28.1)
bser@2.1.1:
dependencies:
node-int64: 0.4.0
+ buffer-equal-constant-time@1.0.1: {}
+
buffer-from@1.1.2: {}
buffer@5.7.1:
@@ -10828,6 +9164,15 @@ snapshots:
base64-js: 1.5.1
ieee754: 1.2.1
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bundle-name@4.1.0:
+ dependencies:
+ run-applescript: 7.1.0
+
bytes@3.1.2: {}
call-bind-apply-helpers@1.0.2:
@@ -10853,7 +9198,7 @@ snapshots:
camelcase@6.3.0: {}
- caniuse-lite@1.0.30001757: {}
+ caniuse-lite@1.0.30001770: {}
chalk@2.4.2:
dependencies:
@@ -10866,6 +9211,8 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ char-regex@1.0.2: {}
+
cheerio-select@2.1.0:
dependencies:
boolbase: 1.0.0
@@ -10885,11 +9232,13 @@ snapshots:
parse5: 7.3.0
parse5-htmlparser2-tree-adapter: 7.1.0
+ chownr@1.1.4: {}
+
chownr@3.0.0: {}
chrome-launcher@0.15.2:
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -10898,7 +9247,7 @@ snapshots:
chromium-edge-launcher@0.2.0:
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -10911,6 +9260,8 @@ snapshots:
ci-info@3.9.0: {}
+ cjs-module-lexer@1.4.3: {}
+
clean-stack@2.2.0: {}
cli-cursor@2.1.0:
@@ -10947,6 +9298,10 @@ snapshots:
clone@1.0.4: {}
+ co@4.6.0: {}
+
+ collect-v8-coverage@1.0.3: {}
+
color-convert@1.9.3:
dependencies:
color-name: 1.1.3
@@ -10995,6 +9350,8 @@ snapshots:
command-exists@1.2.9: {}
+ commander@11.1.0: {}
+
commander@12.1.0: {}
commander@2.20.3: {}
@@ -11036,9 +9393,9 @@ snapshots:
convert-source-map@2.0.0: {}
- core-js-compat@3.47.0:
+ core-js-compat@3.48.0:
dependencies:
- browserslist: 4.28.0
+ browserslist: 4.28.1
cosmiconfig@9.0.0(typescript@5.9.3):
dependencies:
@@ -11049,6 +9406,21 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
+ create-jest@29.7.0(@types/node@25.2.3):
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-config: 29.7.0(@types/node@25.2.3)
+ jest-util: 29.7.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -11107,8 +9479,14 @@ snapshots:
decode-uri-component@0.2.2: {}
+ decompress-response@6.0.0:
+ dependencies:
+ mimic-response: 3.1.0
+
dedent@0.6.0: {}
+ dedent@1.7.1: {}
+
deep-extend@0.6.0: {}
deep-is@0.1.4: {}
@@ -11117,6 +9495,13 @@ snapshots:
deepmerge@4.3.1: {}
+ default-browser-id@5.0.1: {}
+
+ default-browser@5.5.0:
+ dependencies:
+ bundle-name: 4.1.0
+ default-browser-id: 5.0.1
+
defaults@1.0.4:
dependencies:
clone: 1.0.4
@@ -11129,6 +9514,8 @@ snapshots:
define-lazy-prop@2.0.0: {}
+ define-lazy-prop@3.0.0: {}
+
define-properties@1.2.1:
dependencies:
define-data-property: 1.1.4
@@ -11141,6 +9528,10 @@ snapshots:
detect-libc@2.1.2: {}
+ detect-newline@3.1.0: {}
+
+ diff-sequences@29.6.3: {}
+
dir-glob@3.0.1:
dependencies:
path-type: 4.0.0
@@ -11179,6 +9570,23 @@ snapshots:
dotenv@16.6.1: {}
+ drizzle-kit@1.0.0-beta.13-f728631:
+ dependencies:
+ '@drizzle-team/brocli': 0.11.0
+ '@js-temporal/polyfill': 0.5.1
+ esbuild: 0.25.12
+ jiti: 2.6.1
+
+ drizzle-orm@1.0.0-beta.13-f728631(0b72bd9ef2b6872263c5ffe3abac06d7):
+ dependencies:
+ '@types/mssql': 9.1.9(@azure/core-client@1.10.1)
+ mssql: 11.0.1(@azure/core-client@1.10.1)
+ optionalDependencies:
+ '@op-engineering/op-sqlite': 15.2.5(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ '@types/better-sqlite3': 7.6.13
+ better-sqlite3: 12.6.2
+ expo-sqlite: 16.0.10(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+
dunder-proto@1.0.1:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -11187,9 +9595,15 @@ snapshots:
eastasianwidth@0.2.0: {}
+ ecdsa-sig-formatter@1.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
ee-first@1.1.1: {}
- electron-to-chromium@1.5.260: {}
+ electron-to-chromium@1.5.286: {}
+
+ emittery@0.13.1: {}
emoji-regex@8.0.0: {}
@@ -11199,15 +9613,21 @@ snapshots:
encodeurl@2.0.0: {}
+ end-of-stream@1.4.5:
+ dependencies:
+ once: 1.4.0
+
entities@4.5.0: {}
entities@6.0.1: {}
+ entities@7.0.1: {}
+
env-editor@0.4.2: {}
env-paths@2.2.1: {}
- envinfo@7.20.0: {}
+ envinfo@7.21.0: {}
error-ex@1.3.4:
dependencies:
@@ -11217,12 +9637,12 @@ snapshots:
dependencies:
stackframe: 1.3.4
- errorhandler@1.5.1:
+ errorhandler@1.5.2:
dependencies:
accepts: 1.3.8
escape-html: 1.0.3
- es-abstract@1.24.0:
+ es-abstract@1.24.1:
dependencies:
array-buffer-byte-length: 1.0.2
arraybuffer.prototype.slice: 1.0.4
@@ -11277,18 +9697,18 @@ snapshots:
typed-array-byte-offset: 1.0.4
typed-array-length: 1.0.7
unbox-primitive: 1.1.0
- which-typed-array: 1.1.19
+ which-typed-array: 1.1.20
es-define-property@1.0.1: {}
es-errors@1.3.0: {}
- es-iterator-helpers@1.2.1:
+ es-iterator-helpers@1.2.2:
dependencies:
call-bind: 1.0.8
call-bound: 1.0.4
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-errors: 1.3.0
es-set-tostringtag: 2.1.0
function-bind: 1.1.2
@@ -11323,6 +9743,35 @@ snapshots:
is-date-object: 1.1.0
is-symbol: 1.1.1
+ esbuild@0.25.12:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.25.12
+ '@esbuild/android-arm': 0.25.12
+ '@esbuild/android-arm64': 0.25.12
+ '@esbuild/android-x64': 0.25.12
+ '@esbuild/darwin-arm64': 0.25.12
+ '@esbuild/darwin-x64': 0.25.12
+ '@esbuild/freebsd-arm64': 0.25.12
+ '@esbuild/freebsd-x64': 0.25.12
+ '@esbuild/linux-arm': 0.25.12
+ '@esbuild/linux-arm64': 0.25.12
+ '@esbuild/linux-ia32': 0.25.12
+ '@esbuild/linux-loong64': 0.25.12
+ '@esbuild/linux-mips64el': 0.25.12
+ '@esbuild/linux-ppc64': 0.25.12
+ '@esbuild/linux-riscv64': 0.25.12
+ '@esbuild/linux-s390x': 0.25.12
+ '@esbuild/linux-x64': 0.25.12
+ '@esbuild/netbsd-arm64': 0.25.12
+ '@esbuild/netbsd-x64': 0.25.12
+ '@esbuild/openbsd-arm64': 0.25.12
+ '@esbuild/openbsd-x64': 0.25.12
+ '@esbuild/openharmony-arm64': 0.25.12
+ '@esbuild/sunos-x64': 0.25.12
+ '@esbuild/win32-arm64': 0.25.12
+ '@esbuild/win32-ia32': 0.25.12
+ '@esbuild/win32-x64': 0.25.12
+
escalade@3.2.0: {}
escape-html@1.0.3: {}
@@ -11343,27 +9792,57 @@ snapshots:
eslint: 8.57.1
ignore: 5.3.2
- eslint-plugin-ft-flow@2.0.3(@babel/eslint-parser@7.28.5(@babel/core@7.28.5)(eslint@8.57.1))(eslint@8.57.1):
+ eslint-plugin-ft-flow@2.0.3(@babel/eslint-parser@7.28.6(@babel/core@7.29.0)(eslint@8.57.1))(eslint@8.57.1):
+ dependencies:
+ '@babel/eslint-parser': 7.28.6(@babel/core@7.29.0)(eslint@8.57.1)
+ eslint: 8.57.1
+ lodash: 4.17.23
+ string-natural-compare: 3.0.1
+
+ eslint-plugin-ft-flow@3.0.11(eslint@8.57.1)(hermes-eslint@0.33.3):
dependencies:
- '@babel/eslint-parser': 7.28.5(@babel/core@7.28.5)(eslint@8.57.1)
eslint: 8.57.1
- lodash: 4.17.21
+ hermes-eslint: 0.33.3
+ lodash: 4.17.23
string-natural-compare: 3.0.1
- eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3):
+ eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@25.2.3))(typescript@5.9.3):
dependencies:
'@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.3)
eslint: 8.57.1
optionalDependencies:
'@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
+ jest: 29.7.0(@types/node@25.2.3)
transitivePeerDependencies:
- supports-color
- typescript
+ eslint-plugin-jest@29.15.0(@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@25.2.3))(typescript@5.9.3):
+ dependencies:
+ '@typescript-eslint/utils': 8.56.0(eslint@8.57.1)(typescript@5.9.3)
+ eslint: 8.57.1
+ optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
+ jest: 29.7.0(@types/node@25.2.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
eslint-plugin-react-hooks@5.2.0(eslint@8.57.1):
dependencies:
eslint: 8.57.1
+ eslint-plugin-react-hooks@7.0.1(eslint@8.57.1):
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/parser': 7.29.0
+ eslint: 8.57.1
+ hermes-parser: 0.25.1
+ zod: 4.3.6
+ zod-validation-error: 4.0.2(zod@4.3.6)
+ transitivePeerDependencies:
+ - supports-color
+
eslint-plugin-react-native-globals@0.1.2: {}
eslint-plugin-react-native@4.1.0(eslint@8.57.1):
@@ -11371,6 +9850,11 @@ snapshots:
eslint: 8.57.1
eslint-plugin-react-native-globals: 0.1.2
+ eslint-plugin-react-native@5.0.0(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+ eslint-plugin-react-native-globals: 0.1.2
+
eslint-plugin-react@7.37.5(eslint@8.57.1):
dependencies:
array-includes: 3.1.9
@@ -11378,7 +9862,7 @@ snapshots:
array.prototype.flatmap: 1.3.3
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
- es-iterator-helpers: 1.2.1
+ es-iterator-helpers: 1.2.2
eslint: 8.57.1
estraverse: 5.3.0
hasown: 2.0.2
@@ -11388,7 +9872,7 @@ snapshots:
object.fromentries: 2.0.8
object.values: 1.2.1
prop-types: 15.8.1
- resolve: 2.0.0-next.5
+ resolve: 2.0.0-next.6
semver: 6.3.1
string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
@@ -11407,9 +9891,11 @@ snapshots:
eslint-visitor-keys@3.4.3: {}
+ eslint-visitor-keys@5.0.0: {}
+
eslint@8.57.1:
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
'@eslint-community/regexpp': 4.12.2
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.57.1
@@ -11426,7 +9912,7 @@ snapshots:
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
- esquery: 1.6.0
+ esquery: 1.7.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
@@ -11458,7 +9944,7 @@ snapshots:
esprima@4.0.1: {}
- esquery@1.6.0:
+ esquery@1.7.0:
dependencies:
estraverse: 5.3.0
@@ -11478,6 +9964,8 @@ snapshots:
eventemitter3@4.0.7: {}
+ events@3.3.0: {}
+
exec-async@2.2.0: {}
execa@5.1.1:
@@ -11492,83 +9980,95 @@ snapshots:
signal-exit: 3.0.7
strip-final-newline: 2.0.0
- expo-application@7.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)):
+ exit@0.1.2: {}
+
+ expand-template@2.0.3: {}
+
+ expect@29.7.0:
+ dependencies:
+ '@jest/expect-utils': 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+
+ expo-application@7.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
- expo-asset@12.0.10(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-asset@12.0.12(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- '@expo/image-utils': 0.8.7
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- expo-constants: 18.0.10(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ '@expo/image-utils': 0.8.8
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ expo-constants: 18.0.13(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
transitivePeerDependencies:
- supports-color
- expo-clipboard@8.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-clipboard@8.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- expo-constants@18.0.10(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)):
+ expo-constants@18.0.13(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)):
dependencies:
- '@expo/config': 12.0.10
- '@expo/env': 2.0.7
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ '@expo/config': 12.0.13
+ '@expo/env': 2.0.8
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
transitivePeerDependencies:
- supports-color
- expo-document-picker@14.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)):
+ expo-document-picker@14.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
- expo-file-system@19.0.19(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)):
+ expo-file-system@19.0.21(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- expo-font@14.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-font@14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
fontfaceobserver: 2.3.0
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- expo-haptics@15.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)):
+ expo-haptics@15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
- expo-keep-awake@15.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0):
+ expo-keep-awake@15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react@19.1.4):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react: 19.1.0
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react: 19.1.4
- expo-linear-gradient@15.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-linear-gradient@15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- expo-linking@8.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-linking@8.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- expo-constants: 18.0.10(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ expo-constants: 18.0.13(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
invariant: 2.2.4
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
transitivePeerDependencies:
- expo
- supports-color
- expo-localization@17.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0):
+ expo-localization@17.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react@19.1.4):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react: 19.1.0
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react: 19.1.4
rtl-detect: 1.1.2
- expo-modules-autolinking@3.0.22:
+ expo-modules-autolinking@3.0.24:
dependencies:
'@expo/spawn-async': 1.7.2
chalk: 4.1.2
@@ -11576,86 +10076,86 @@ snapshots:
require-from-string: 2.0.2
resolve-from: 5.0.0
- expo-modules-core@3.0.26(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-modules-core@3.0.29(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
invariant: 2.2.4
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- expo-navigation-bar@5.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-navigation-bar@5.0.10(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3(supports-color@9.4.0)
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
transitivePeerDependencies:
- supports-color
- expo-notifications@0.32.13(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-notifications@0.32.16(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- '@expo/image-utils': 0.8.7
+ '@expo/image-utils': 0.8.8
'@ide/backoff': 1.0.0
abort-controller: 3.0.0
assert: 2.1.0
badgin: 1.2.3
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- expo-application: 7.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))
- expo-constants: 18.0.10(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ expo-application: 7.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))
+ expo-constants: 18.0.13(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
transitivePeerDependencies:
- supports-color
- expo-server@1.0.4: {}
+ expo-server@1.0.5: {}
- expo-speech@14.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)):
+ expo-speech@14.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)):
dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
- expo-sqlite@16.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-sqlite@16.0.10(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
await-lock: 2.2.2
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
-
- expo-web-browser@15.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)):
- dependencies:
- expo: 54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
-
- expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
- dependencies:
- '@babel/runtime': 7.28.4
- '@expo/cli': 54.0.16(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
- '@expo/config': 12.0.10
- '@expo/config-plugins': 54.0.2
- '@expo/devtools': 0.1.7(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@expo/fingerprint': 0.15.3
- '@expo/metro': 54.1.0
- '@expo/metro-config': 54.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))
- '@expo/vector-icons': 15.0.3(expo-font@14.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ optional: true
+
+ expo-web-browser@15.0.10(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)):
+ dependencies:
+ expo: 54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+
+ expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
+ dependencies:
+ '@babel/runtime': 7.28.6
+ '@expo/cli': 54.0.23(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
+ '@expo/config': 12.0.13
+ '@expo/config-plugins': 54.0.4
+ '@expo/devtools': 0.1.8(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ '@expo/fingerprint': 0.15.4
+ '@expo/metro': 54.2.0
+ '@expo/metro-config': 54.0.14(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))
+ '@expo/vector-icons': 15.0.3(expo-font@14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
'@ungap/structured-clone': 1.3.0
- babel-preset-expo: 54.0.7(@babel/core@7.28.5)(@babel/runtime@7.28.4)(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-refresh@0.14.2)
- expo-asset: 12.0.10(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- expo-constants: 18.0.10(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
- expo-file-system: 19.0.19(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
- expo-font: 14.0.9(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- expo-keep-awake: 15.0.7(expo@54.0.25(@babel/core@7.28.5)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)
- expo-modules-autolinking: 3.0.22
- expo-modules-core: 3.0.26(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ babel-preset-expo: 54.0.10(@babel/core@7.29.0)(@babel/runtime@7.28.6)(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-refresh@0.14.2)
+ expo-asset: 12.0.12(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ expo-constants: 18.0.13(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
+ expo-file-system: 19.0.21(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
+ expo-font: 14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ expo-keep-awake: 15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react@19.1.4)
+ expo-modules-autolinking: 3.0.24
+ expo-modules-core: 3.0.29(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
pretty-format: 29.7.0
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
react-refresh: 0.14.2
whatwg-url-without-unicode: 8.0.0-3
optionalDependencies:
- react-native-webview: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-webview: 13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
transitivePeerDependencies:
- '@babel/core'
- - '@modelcontextprotocol/sdk'
- bufferutil
- expo-router
- graphql
@@ -11682,7 +10182,7 @@ snapshots:
dependencies:
strnum: 1.1.2
- fastq@1.19.1:
+ fastq@1.20.1:
dependencies:
reusify: 1.1.0
@@ -11690,10 +10190,16 @@ snapshots:
dependencies:
bser: 2.1.1
+ fdir@6.5.0(picomatch@4.0.3):
+ optionalDependencies:
+ picomatch: 4.0.3
+
file-entry-cache@6.0.1:
dependencies:
flat-cache: 3.2.0
+ file-uri-to-path@1.0.0: {}
+
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
@@ -11752,15 +10258,12 @@ snapshots:
dependencies:
is-callable: 1.2.7
- foreground-child@3.3.1:
- dependencies:
- cross-spawn: 7.0.6
- signal-exit: 4.1.0
-
freeport-async@2.0.0: {}
fresh@0.5.2: {}
+ fs-constants@1.0.0: {}
+
fs-extra@8.1.0:
dependencies:
graceful-fs: 4.2.11
@@ -11821,6 +10324,8 @@ snapshots:
getenv@2.0.0: {}
+ github-from-package@0.0.0: {}
+
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -11829,14 +10334,11 @@ snapshots:
dependencies:
is-glob: 4.0.3
- glob@10.5.0:
+ glob@13.0.5:
dependencies:
- foreground-child: 3.3.1
- jackspeak: 3.4.3
- minimatch: 9.0.5
+ minimatch: 10.2.1
minipass: 7.1.2
- package-json-from-dist: 1.0.1
- path-scurry: 1.11.1
+ path-scurry: 2.0.1
glob@7.2.3:
dependencies:
@@ -11906,10 +10408,24 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ hermes-eslint@0.33.3:
+ dependencies:
+ esrecurse: 4.3.0
+ hermes-estree: 0.33.3
+ hermes-parser: 0.33.3
+
+ hermes-estree@0.25.1: {}
+
hermes-estree@0.29.1: {}
hermes-estree@0.32.0: {}
+ hermes-estree@0.33.3: {}
+
+ hermes-parser@0.25.1:
+ dependencies:
+ hermes-estree: 0.25.1
+
hermes-parser@0.29.1:
dependencies:
hermes-estree: 0.29.1
@@ -11918,6 +10434,10 @@ snapshots:
dependencies:
hermes-estree: 0.32.0
+ hermes-parser@0.33.3:
+ dependencies:
+ hermes-estree: 0.33.3
+
hoist-non-react-statics@3.3.2:
dependencies:
react-is: 16.13.1
@@ -11926,12 +10446,14 @@ snapshots:
dependencies:
lru-cache: 10.4.3
- htmlparser2@10.0.0:
+ html-escaper@2.0.2: {}
+
+ htmlparser2@10.1.0:
dependencies:
domelementtype: 2.3.0
domhandler: 5.0.3
domutils: 3.2.2
- entities: 6.0.1
+ entities: 7.0.1
htmlparser2@8.0.2:
dependencies:
@@ -11940,14 +10462,21 @@ snapshots:
domutils: 3.2.2
entities: 4.5.0
- http-errors@2.0.0:
+ http-errors@2.0.1:
dependencies:
depd: 2.0.0
inherits: 2.0.4
setprototypeof: 1.2.0
- statuses: 2.0.1
+ statuses: 2.0.2
toidentifier: 1.0.1
+ http-proxy-agent@7.0.2:
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3(supports-color@9.4.0)
+ transitivePeerDependencies:
+ - supports-color
+
https-proxy-agent@7.0.6:
dependencies:
agent-base: 7.1.4
@@ -11959,11 +10488,11 @@ snapshots:
husky@7.0.4: {}
- i18n-js@4.5.1:
+ i18n-js@4.5.2:
dependencies:
bignumber.js: 9.3.1
- lodash: 4.17.21
- make-plural: 7.4.0
+ lodash: 4.17.23
+ make-plural: 7.5.0
iconv-lite@0.4.24:
dependencies:
@@ -11973,10 +10502,16 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
+ iconv-lite@0.7.2:
+ dependencies:
+ safer-buffer: 2.1.2
+
ieee754@1.2.1: {}
ignore@5.3.2: {}
+ ignore@7.0.5: {}
+
image-size@1.2.1:
dependencies:
queue: 6.0.2
@@ -11986,6 +10521,11 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
+ import-local@3.2.0:
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
+
imurmurhash@0.1.4: {}
indent-string@4.0.0: {}
@@ -12060,6 +10600,8 @@ snapshots:
is-docker@2.2.1: {}
+ is-docker@3.0.0: {}
+
is-extglob@2.1.1: {}
is-finalizationregistry@1.1.1:
@@ -12072,6 +10614,8 @@ snapshots:
is-fullwidth-code-point@4.0.0: {}
+ is-generator-fn@2.1.0: {}
+
is-generator-function@1.1.2:
dependencies:
call-bound: 1.0.4
@@ -12084,6 +10628,10 @@ snapshots:
dependencies:
is-extglob: 2.1.1
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
is-interactive@1.0.0: {}
is-map@2.0.3: {}
@@ -12134,7 +10682,7 @@ snapshots:
is-typed-array@1.1.15:
dependencies:
- which-typed-array: 1.1.19
+ which-typed-array: 1.1.20
is-unicode-supported@0.1.0: {}
@@ -12155,6 +10703,10 @@ snapshots:
dependencies:
is-docker: 2.2.1
+ is-wsl@3.1.1:
+ dependencies:
+ is-inside-container: 1.0.0
+
isarray@2.0.5: {}
isexe@2.0.0: {}
@@ -12163,14 +10715,43 @@ snapshots:
istanbul-lib-instrument@5.2.1:
dependencies:
- '@babel/core': 7.28.5
- '@babel/parser': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/parser': 7.29.0
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 6.3.1
transitivePeerDependencies:
- supports-color
+ istanbul-lib-instrument@6.0.3:
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/parser': 7.29.0
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.7.4
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-lib-report@3.0.1:
+ dependencies:
+ istanbul-lib-coverage: 3.2.2
+ make-dir: 4.0.0
+ supports-color: 7.2.0
+
+ istanbul-lib-source-maps@4.0.1:
+ dependencies:
+ debug: 4.4.3(supports-color@9.4.0)
+ istanbul-lib-coverage: 3.2.2
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-reports@3.2.0:
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.1
+
iterator.prototype@1.1.5:
dependencies:
define-data-property: 1.1.4
@@ -12180,18 +10761,112 @@ snapshots:
has-symbols: 1.1.0
set-function-name: 2.0.2
- jackspeak@3.4.3:
+ jest-changed-files@29.7.0:
+ dependencies:
+ execa: 5.1.1
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+
+ jest-circus@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 25.2.3
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 1.7.1
+ is-generator-fn: 2.1.0
+ jest-each: 29.7.0
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ pretty-format: 29.7.0
+ pure-rand: 6.1.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ jest-cli@29.7.0(@types/node@25.2.3):
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ create-jest: 29.7.0(@types/node@25.2.3)
+ exit: 0.1.2
+ import-local: 3.2.0
+ jest-config: 29.7.0(@types/node@25.2.3)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ jest-config@29.7.0(@types/node@25.2.3):
dependencies:
- '@isaacs/cliui': 8.0.2
+ '@babel/core': 7.29.0
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ babel-jest: 29.7.0(@babel/core@7.29.0)
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ deepmerge: 4.3.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ micromatch: 4.0.8
+ parse-json: 5.2.0
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
+ '@types/node': 25.2.3
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ jest-diff@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-docblock@29.7.0:
+ dependencies:
+ detect-newline: 3.1.0
+
+ jest-each@29.7.0:
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ jest-util: 29.7.0
+ pretty-format: 29.7.0
jest-environment-node@29.7.0:
dependencies:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -12201,7 +10876,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -12213,9 +10888,21 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ jest-leak-detector@29.7.0:
+ dependencies:
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ jest-matcher-utils@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
jest-message-util@29.7.0:
dependencies:
- '@babel/code-frame': 7.27.1
+ '@babel/code-frame': 7.29.0
'@jest/types': 29.6.3
'@types/stack-utils': 2.0.3
chalk: 4.1.2
@@ -12228,15 +10915,116 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
jest-util: 29.7.0
+ jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
+ optionalDependencies:
+ jest-resolve: 29.7.0
+
jest-regex-util@29.6.3: {}
+ jest-resolve-dependencies@29.7.0:
+ dependencies:
+ jest-regex-util: 29.6.3
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-resolve@29.7.0:
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ resolve: 1.22.11
+ resolve.exports: 2.0.3
+ slash: 3.0.0
+
+ jest-runner@29.7.0:
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/environment': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 25.2.3
+ chalk: 4.1.2
+ emittery: 0.13.1
+ graceful-fs: 4.2.11
+ jest-docblock: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-haste-map: 29.7.0
+ jest-leak-detector: 29.7.0
+ jest-message-util: 29.7.0
+ jest-resolve: 29.7.0
+ jest-runtime: 29.7.0
+ jest-util: 29.7.0
+ jest-watcher: 29.7.0
+ jest-worker: 29.7.0
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-runtime@29.7.0:
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/globals': 29.7.0
+ '@jest/source-map': 29.6.3
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 25.2.3
+ chalk: 4.1.2
+ cjs-module-lexer: 1.4.3
+ collect-v8-coverage: 1.0.3
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ jest-snapshot@29.7.0:
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0)
+ '@babel/types': 7.29.0
+ '@jest/expect-utils': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0)
+ chalk: 4.1.2
+ expect: 29.7.0
+ graceful-fs: 4.2.11
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ natural-compare: 1.4.0
+ pretty-format: 29.7.0
+ semver: 7.7.4
+ transitivePeerDependencies:
+ - supports-color
+
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -12251,15 +11039,40 @@ snapshots:
leven: 3.1.0
pretty-format: 29.7.0
+ jest-watcher@29.7.0:
+ dependencies:
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 25.2.3
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.13.1
+ jest-util: 29.7.0
+ string-length: 4.0.2
+
jest-worker@29.7.0:
dependencies:
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
+ jest@29.7.0(@types/node@25.2.3):
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/types': 29.6.3
+ import-local: 3.2.0
+ jest-cli: 29.7.0(@types/node@25.2.3)
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
jimp-compact@0.16.1: {}
+ jiti@2.6.1: {}
+
joi@17.13.3:
dependencies:
'@hapi/hoek': 9.3.0
@@ -12268,6 +11081,8 @@ snapshots:
'@sideway/formula': 3.0.1
'@sideway/pinpoint': 2.0.0
+ js-md4@0.3.2: {}
+
js-tokens@4.0.0: {}
js-yaml@3.14.2:
@@ -12279,6 +11094,8 @@ snapshots:
dependencies:
argparse: 2.0.1
+ jsbi@4.3.2: {}
+
jsc-safe-url@0.2.4: {}
jsesc@3.1.0: {}
@@ -12297,6 +11114,19 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
+ jsonwebtoken@9.0.3:
+ dependencies:
+ jws: 4.0.1
+ lodash.includes: 4.3.0
+ lodash.isboolean: 3.0.3
+ lodash.isinteger: 4.0.4
+ lodash.isnumber: 3.0.3
+ lodash.isplainobject: 4.0.6
+ lodash.isstring: 4.0.1
+ lodash.once: 4.1.1
+ ms: 2.1.3
+ semver: 7.7.4
+
jsx-ast-utils@3.3.5:
dependencies:
array-includes: 3.1.9
@@ -12304,6 +11134,17 @@ snapshots:
object.assign: 4.1.7
object.values: 1.2.1
+ jwa@2.0.1:
+ dependencies:
+ buffer-equal-constant-time: 1.0.1
+ ecdsa-sig-formatter: 1.0.11
+ safe-buffer: 5.2.1
+
+ jws@4.0.1:
+ dependencies:
+ jwa: 2.0.1
+ safe-buffer: 5.2.1
+
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -12312,7 +11153,7 @@ snapshots:
lan-network@0.1.7: {}
- launch-editor@2.12.0:
+ launch-editor@2.13.0:
dependencies:
picocolors: 1.1.1
shell-quote: 1.8.3
@@ -12331,54 +11172,54 @@ snapshots:
transitivePeerDependencies:
- supports-color
- lightningcss-android-arm64@1.30.2:
+ lightningcss-android-arm64@1.31.1:
optional: true
- lightningcss-darwin-arm64@1.30.2:
+ lightningcss-darwin-arm64@1.31.1:
optional: true
- lightningcss-darwin-x64@1.30.2:
+ lightningcss-darwin-x64@1.31.1:
optional: true
- lightningcss-freebsd-x64@1.30.2:
+ lightningcss-freebsd-x64@1.31.1:
optional: true
- lightningcss-linux-arm-gnueabihf@1.30.2:
+ lightningcss-linux-arm-gnueabihf@1.31.1:
optional: true
- lightningcss-linux-arm64-gnu@1.30.2:
+ lightningcss-linux-arm64-gnu@1.31.1:
optional: true
- lightningcss-linux-arm64-musl@1.30.2:
+ lightningcss-linux-arm64-musl@1.31.1:
optional: true
- lightningcss-linux-x64-gnu@1.30.2:
+ lightningcss-linux-x64-gnu@1.31.1:
optional: true
- lightningcss-linux-x64-musl@1.30.2:
+ lightningcss-linux-x64-musl@1.31.1:
optional: true
- lightningcss-win32-arm64-msvc@1.30.2:
+ lightningcss-win32-arm64-msvc@1.31.1:
optional: true
- lightningcss-win32-x64-msvc@1.30.2:
+ lightningcss-win32-x64-msvc@1.31.1:
optional: true
- lightningcss@1.30.2:
+ lightningcss@1.31.1:
dependencies:
detect-libc: 2.1.2
optionalDependencies:
- lightningcss-android-arm64: 1.30.2
- lightningcss-darwin-arm64: 1.30.2
- lightningcss-darwin-x64: 1.30.2
- lightningcss-freebsd-x64: 1.30.2
- lightningcss-linux-arm-gnueabihf: 1.30.2
- lightningcss-linux-arm64-gnu: 1.30.2
- lightningcss-linux-arm64-musl: 1.30.2
- lightningcss-linux-x64-gnu: 1.30.2
- lightningcss-linux-x64-musl: 1.30.2
- lightningcss-win32-arm64-msvc: 1.30.2
- lightningcss-win32-x64-msvc: 1.30.2
+ lightningcss-android-arm64: 1.31.1
+ lightningcss-darwin-arm64: 1.31.1
+ lightningcss-darwin-x64: 1.31.1
+ lightningcss-freebsd-x64: 1.31.1
+ lightningcss-linux-arm-gnueabihf: 1.31.1
+ lightningcss-linux-arm64-gnu: 1.31.1
+ lightningcss-linux-arm64-musl: 1.31.1
+ lightningcss-linux-x64-gnu: 1.31.1
+ lightningcss-linux-x64-musl: 1.31.1
+ lightningcss-win32-arm64-msvc: 1.31.1
+ lightningcss-win32-x64-msvc: 1.31.1
lilconfig@2.0.5: {}
@@ -12431,15 +11272,29 @@ snapshots:
dependencies:
p-locate: 6.0.0
- lodash-es@4.17.21: {}
+ lodash-es@4.17.23: {}
lodash.debounce@4.0.8: {}
+ lodash.includes@4.3.0: {}
+
+ lodash.isboolean@3.0.3: {}
+
+ lodash.isinteger@4.0.4: {}
+
+ lodash.isnumber@3.0.3: {}
+
+ lodash.isplainobject@4.0.6: {}
+
+ lodash.isstring@4.0.1: {}
+
lodash.merge@4.6.2: {}
+ lodash.once@4.1.1: {}
+
lodash.throttle@4.1.1: {}
- lodash@4.17.21: {}
+ lodash@4.17.23: {}
log-symbols@2.2.0:
dependencies:
@@ -12473,29 +11328,35 @@ snapshots:
lottie-ios@3.5.0: {}
- lottie-react-native@5.1.6(lottie-ios@3.2.3)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ lottie-react-native@5.1.6(lottie-ios@3.2.3)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
invariant: 2.2.4
lottie-ios: 3.2.3
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-modules: 1.0.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-safe-modules: 1.0.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
- lottie-react-native@5.1.6(lottie-ios@3.5.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ lottie-react-native@5.1.6(lottie-ios@3.5.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
invariant: 2.2.4
lottie-ios: 3.5.0
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-modules: 1.0.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-safe-modules: 1.0.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))
lru-cache@10.4.3: {}
+ lru-cache@11.2.6: {}
+
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
- make-plural@7.4.0: {}
+ make-dir@4.0.0:
+ dependencies:
+ semver: 7.7.4
+
+ make-plural@7.5.0: {}
makeerror@1.0.12:
dependencies:
@@ -12513,41 +11374,19 @@ snapshots:
merge2@1.4.1: {}
- metro-babel-transformer@0.83.2:
- dependencies:
- '@babel/core': 7.28.5
- flow-enums-runtime: 0.0.6
- hermes-parser: 0.32.0
- nullthrows: 1.1.1
- transitivePeerDependencies:
- - supports-color
-
metro-babel-transformer@0.83.3:
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
flow-enums-runtime: 0.0.6
hermes-parser: 0.32.0
nullthrows: 1.1.1
transitivePeerDependencies:
- supports-color
- metro-cache-key@0.83.2:
- dependencies:
- flow-enums-runtime: 0.0.6
-
metro-cache-key@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
- metro-cache@0.83.2:
- dependencies:
- exponential-backoff: 3.1.3
- flow-enums-runtime: 0.0.6
- https-proxy-agent: 7.0.6
- metro-core: 0.83.2
- transitivePeerDependencies:
- - supports-color
-
metro-cache@0.83.3:
dependencies:
exponential-backoff: 3.1.3
@@ -12557,21 +11396,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- metro-config@0.83.2:
- dependencies:
- connect: 3.7.0
- flow-enums-runtime: 0.0.6
- jest-validate: 29.7.0
- metro: 0.83.2
- metro-cache: 0.83.2
- metro-core: 0.83.2
- metro-runtime: 0.83.2
- yaml: 2.8.1
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
-
metro-config@0.83.3:
dependencies:
connect: 3.7.0
@@ -12581,38 +11405,18 @@ snapshots:
metro-cache: 0.83.3
metro-core: 0.83.3
metro-runtime: 0.83.3
- yaml: 2.8.1
+ yaml: 2.8.2
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- metro-core@0.83.2:
- dependencies:
- flow-enums-runtime: 0.0.6
- lodash.throttle: 4.1.1
- metro-resolver: 0.83.2
-
metro-core@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
lodash.throttle: 4.1.1
metro-resolver: 0.83.3
- metro-file-map@0.83.2:
- dependencies:
- debug: 4.4.3(supports-color@9.4.0)
- fb-watchman: 2.0.2
- flow-enums-runtime: 0.0.6
- graceful-fs: 4.2.11
- invariant: 2.2.4
- jest-worker: 29.7.0
- micromatch: 4.0.8
- nullthrows: 1.1.1
- walker: 1.0.8
- transitivePeerDependencies:
- - supports-color
-
metro-file-map@0.83.3:
dependencies:
debug: 4.4.3(supports-color@9.4.0)
@@ -12627,54 +11431,25 @@ snapshots:
transitivePeerDependencies:
- supports-color
- metro-minify-terser@0.83.2:
- dependencies:
- flow-enums-runtime: 0.0.6
- terser: 5.44.1
-
metro-minify-terser@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
- terser: 5.44.1
-
- metro-resolver@0.83.2:
- dependencies:
- flow-enums-runtime: 0.0.6
+ terser: 5.46.0
metro-resolver@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
- metro-runtime@0.83.2:
- dependencies:
- '@babel/runtime': 7.28.4
- flow-enums-runtime: 0.0.6
-
metro-runtime@0.83.3:
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.28.6
flow-enums-runtime: 0.0.6
- metro-source-map@0.83.2:
- dependencies:
- '@babel/traverse': 7.28.5
- '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.5'
- '@babel/types': 7.28.5
- flow-enums-runtime: 0.0.6
- invariant: 2.2.4
- metro-symbolicate: 0.83.2
- nullthrows: 1.1.1
- ob1: 0.83.2
- source-map: 0.5.7
- vlq: 1.0.1
- transitivePeerDependencies:
- - supports-color
-
metro-source-map@0.83.3:
dependencies:
- '@babel/traverse': 7.28.5
- '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.5'
- '@babel/types': 7.28.5
+ '@babel/traverse': 7.29.0
+ '@babel/traverse--for-generate-function-map': '@babel/traverse@7.29.0'
+ '@babel/types': 7.29.0
flow-enums-runtime: 0.0.6
invariant: 2.2.4
metro-symbolicate: 0.83.3
@@ -12685,17 +11460,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- metro-symbolicate@0.83.2:
- dependencies:
- flow-enums-runtime: 0.0.6
- invariant: 2.2.4
- metro-source-map: 0.83.2
- nullthrows: 1.1.1
- source-map: 0.5.7
- vlq: 1.0.1
- transitivePeerDependencies:
- - supports-color
-
metro-symbolicate@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
@@ -12707,54 +11471,23 @@ snapshots:
transitivePeerDependencies:
- supports-color
- metro-transform-plugins@0.83.2:
- dependencies:
- '@babel/core': 7.28.5
- '@babel/generator': 7.28.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- flow-enums-runtime: 0.0.6
- nullthrows: 1.1.1
- transitivePeerDependencies:
- - supports-color
-
metro-transform-plugins@0.83.3:
dependencies:
- '@babel/core': 7.28.5
- '@babel/generator': 7.28.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- flow-enums-runtime: 0.0.6
- nullthrows: 1.1.1
- transitivePeerDependencies:
- - supports-color
-
- metro-transform-worker@0.83.2:
- dependencies:
- '@babel/core': 7.28.5
- '@babel/generator': 7.28.5
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.29.0
flow-enums-runtime: 0.0.6
- metro: 0.83.2
- metro-babel-transformer: 0.83.2
- metro-cache: 0.83.2
- metro-cache-key: 0.83.2
- metro-minify-terser: 0.83.2
- metro-source-map: 0.83.2
- metro-transform-plugins: 0.83.2
nullthrows: 1.1.1
transitivePeerDependencies:
- - bufferutil
- supports-color
- - utf-8-validate
metro-transform-worker@0.83.3:
dependencies:
- '@babel/core': 7.28.5
- '@babel/generator': 7.28.5
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/core': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
flow-enums-runtime: 0.0.6
metro: 0.83.3
metro-babel-transformer: 0.83.3
@@ -12769,62 +11502,15 @@ snapshots:
- supports-color
- utf-8-validate
- metro@0.83.2:
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/core': 7.28.5
- '@babel/generator': 7.28.5
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
- accepts: 1.3.8
- chalk: 4.1.2
- ci-info: 2.0.0
- connect: 3.7.0
- debug: 4.4.3(supports-color@9.4.0)
- error-stack-parser: 2.1.4
- flow-enums-runtime: 0.0.6
- graceful-fs: 4.2.11
- hermes-parser: 0.32.0
- image-size: 1.2.1
- invariant: 2.2.4
- jest-worker: 29.7.0
- jsc-safe-url: 0.2.4
- lodash.throttle: 4.1.1
- metro-babel-transformer: 0.83.2
- metro-cache: 0.83.2
- metro-cache-key: 0.83.2
- metro-config: 0.83.2
- metro-core: 0.83.2
- metro-file-map: 0.83.2
- metro-resolver: 0.83.2
- metro-runtime: 0.83.2
- metro-source-map: 0.83.2
- metro-symbolicate: 0.83.2
- metro-transform-plugins: 0.83.2
- metro-transform-worker: 0.83.2
- mime-types: 2.1.35
- nullthrows: 1.1.1
- serialize-error: 2.1.0
- source-map: 0.5.7
- throat: 5.0.0
- ws: 7.5.10
- yargs: 17.7.2
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
-
metro@0.83.3:
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/core': 7.28.5
- '@babel/generator': 7.28.5
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/code-frame': 7.29.0
+ '@babel/core': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/parser': 7.29.0
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
accepts: 1.3.8
chalk: 4.1.2
ci-info: 2.0.0
@@ -12884,6 +11570,12 @@ snapshots:
mimic-fn@2.1.0: {}
+ mimic-response@3.1.0: {}
+
+ minimatch@10.2.1:
+ dependencies:
+ brace-expansion: 5.0.2
+
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.12
@@ -12906,12 +11598,26 @@ snapshots:
dependencies:
minipass: 7.1.2
+ mkdirp-classic@0.5.3: {}
+
mkdirp@1.0.4: {}
ms@2.0.0: {}
ms@2.1.3: {}
+ mssql@11.0.1(@azure/core-client@1.10.1):
+ dependencies:
+ '@tediousjs/connection-string': 0.5.0
+ commander: 11.1.0
+ debug: 4.4.3(supports-color@9.4.0)
+ rfdc: 1.4.1
+ tarn: 3.0.2
+ tedious: 18.6.2(@azure/core-client@1.10.1)
+ transitivePeerDependencies:
+ - '@azure/core-client'
+ - supports-color
+
mz@2.7.0:
dependencies:
any-promise: 1.3.0
@@ -12920,6 +11626,10 @@ snapshots:
nanoid@3.3.11: {}
+ napi-build-utils@2.0.0: {}
+
+ native-duplexpair@1.0.0: {}
+
natural-compare@1.4.0: {}
negotiator@0.6.3: {}
@@ -12930,7 +11640,18 @@ snapshots:
nocache@3.0.4: {}
- node-forge@1.3.2: {}
+ node-abi@3.87.0:
+ dependencies:
+ semver: 7.7.4
+
+ node-exports-info@1.6.0:
+ dependencies:
+ array.prototype.flatmap: 1.3.3
+ es-errors: 1.3.0
+ object.entries: 1.1.9
+ semver: 6.3.1
+
+ node-forge@1.3.3: {}
node-int64@0.4.0: {}
@@ -12944,7 +11665,7 @@ snapshots:
dependencies:
hosted-git-info: 7.0.2
proc-log: 4.2.0
- semver: 7.7.3
+ semver: 7.7.4
validate-npm-package-name: 5.0.1
npm-run-path@4.0.1:
@@ -12957,10 +11678,6 @@ snapshots:
nullthrows@1.1.1: {}
- ob1@0.83.2:
- dependencies:
- flow-enums-runtime: 0.0.6
-
ob1@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
@@ -12996,7 +11713,7 @@ snapshots:
dependencies:
call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-object-atoms: 1.1.1
object.values@1.2.1:
@@ -13028,6 +11745,13 @@ snapshots:
dependencies:
mimic-fn: 2.1.0
+ open@10.2.0:
+ dependencies:
+ default-browser: 5.5.0
+ define-lazy-prop: 3.0.0
+ is-inside-container: 1.0.0
+ wsl-utils: 0.1.0
+
open@6.4.0:
dependencies:
is-wsl: 1.1.0
@@ -13113,15 +11837,13 @@ snapshots:
p-try@2.2.0: {}
- package-json-from-dist@1.0.1: {}
-
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
parse-json@5.2.0:
dependencies:
- '@babel/code-frame': 7.27.1
+ '@babel/code-frame': 7.29.0
error-ex: 1.3.4
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -13149,6 +11871,8 @@ snapshots:
path-exists@5.0.0: {}
+ path-extra@1.0.3: {}
+
path-is-absolute@1.0.1: {}
path-key@3.1.1: {}
@@ -13160,6 +11884,11 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
+ path-scurry@2.0.1:
+ dependencies:
+ lru-cache: 11.2.6
+ minipass: 7.1.2
+
path-type@4.0.0: {}
picocolors@1.1.1: {}
@@ -13168,10 +11897,16 @@ snapshots:
picomatch@3.0.1: {}
+ picomatch@4.0.3: {}
+
pidtree@0.5.0: {}
pirates@4.0.7: {}
+ pkg-dir@4.2.0:
+ dependencies:
+ find-up: 4.1.0
+
pkg-up@3.1.0:
dependencies:
find-up: 3.0.0
@@ -13198,6 +11933,21 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ prebuild-install@7.1.3:
+ dependencies:
+ detect-libc: 2.1.2
+ expand-template: 2.0.3
+ github-from-package: 0.0.0
+ minimist: 1.2.8
+ mkdirp-classic: 0.5.3
+ napi-build-utils: 2.0.0
+ node-abi: 3.87.0
+ pump: 3.0.3
+ rc: 1.2.8
+ simple-get: 4.0.1
+ tar-fs: 2.1.4
+ tunnel-agent: 0.6.0
+
prelude-ls@1.2.1: {}
prettier@2.8.8: {}
@@ -13212,6 +11962,8 @@ snapshots:
proc-log@4.2.0: {}
+ process@0.11.10: {}
+
progress@2.0.3: {}
promise@8.3.0:
@@ -13241,14 +11993,21 @@ snapshots:
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.0
- '@types/node': 24.10.1
+ '@types/node': 25.2.3
long: 5.3.2
+ pump@3.0.3:
+ dependencies:
+ end-of-stream: 1.4.5
+ once: 1.4.0
+
punycode@2.3.1: {}
+ pure-rand@6.1.0: {}
+
qrcode-terminal@0.11.0: {}
- qs@6.13.0:
+ qs@6.14.2:
dependencies:
side-channel: 1.1.0
@@ -13267,10 +12026,10 @@ snapshots:
range-parser@1.2.1: {}
- raw-body@2.5.2:
+ raw-body@2.5.3:
dependencies:
bytes: 3.1.2
- http-errors: 2.0.0
+ http-errors: 2.0.1
iconv-lite: 0.4.24
unpipe: 1.0.0
@@ -13289,208 +12048,207 @@ snapshots:
- bufferutil
- utf-8-validate
- react-freeze@1.0.4(react@19.1.0):
+ react-freeze@1.0.4(react@19.1.4):
dependencies:
- react: 19.1.0
+ react: 19.1.4
react-is@16.13.1: {}
react-is@18.3.1: {}
- react-is@19.2.0: {}
+ react-is@19.2.4: {}
- react-native-background-actions@4.0.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)):
+ react-native-background-actions@4.0.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)):
dependencies:
eventemitter3: 4.0.7
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-device-info@14.1.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)):
+ react-native-device-info@14.1.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)):
dependencies:
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-dotenv@3.4.11(@babel/runtime@7.28.4):
+ react-native-dotenv@3.4.11(@babel/runtime@7.28.6):
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.28.6
dotenv: 16.6.1
- react-native-draggable-flatlist@4.0.3(@babel/core@7.28.5)(react-native-gesture-handler@2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)):
+ react-native-draggable-flatlist@4.0.3(@babel/core@7.29.0)(react-native-gesture-handler@2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-reanimated@4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)):
dependencies:
- '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-gesture-handler: 2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-gesture-handler: 2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-reanimated: 4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
transitivePeerDependencies:
- '@babel/core'
- supports-color
- react-native-drawer-layout@4.2.0(react-native-gesture-handler@2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-drawer-layout@4.2.2(react-native-gesture-handler@2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native-reanimated@4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
color: 4.2.3
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-gesture-handler: 2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- use-latest-callback: 0.2.6(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-gesture-handler: 2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-reanimated: 4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ use-latest-callback: 0.2.6(react@19.1.4)
- react-native-edge-to-edge@1.7.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-edge-to-edge@1.7.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-error-boundary@2.0.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-error-boundary@2.0.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-file-access@3.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-file-access@3.2.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-gesture-handler@2.29.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-gesture-handler@2.30.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
'@egjs/hammerjs': 2.0.17
hoist-non-react-statics: 3.3.2
invariant: 2.2.4
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-is-edge-to-edge@1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-is-edge-to-edge@1.2.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-linear-gradient@2.8.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-linear-gradient@2.8.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-lottie-splash-screen@1.1.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-lottie-splash-screen@1.1.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
lottie-ios: 3.2.3
- lottie-react-native: 5.1.6(lottie-ios@3.2.3)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ lottie-react-native: 5.1.6(lottie-ios@3.2.3)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
transitivePeerDependencies:
- react
- react-native-windows
- react-native-mmkv@3.3.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-mmkv@3.3.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-pager-view@6.9.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-pager-view@6.9.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-paper@5.14.5(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-paper@5.15.0(react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- '@callstack/react-theme-provider': 3.0.9(react@19.1.0)
+ '@callstack/react-theme-provider': 3.0.9(react@19.1.4)
color: 3.2.1
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- use-latest-callback: 0.2.6(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ use-latest-callback: 0.2.6(react@19.1.4)
- react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-reanimated@4.2.2(react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- '@babel/core': 7.28.5
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-worklets: 0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- semver: 7.7.2
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ react-native-worklets: 0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ semver: 7.7.3
- react-native-saf-x@2.2.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-saf-x@2.2.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-safe-area-context@5.6.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-safe-modules@1.0.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)):
+ react-native-safe-modules@1.0.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)):
dependencies:
dedent: 0.6.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-screens@4.18.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-screens@4.23.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-freeze: 1.0.4(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-freeze: 1.0.4(react@19.1.4)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
warn-once: 0.1.1
- react-native-shimmer-placeholder@2.0.9(prop-types@15.8.1)(react-native-linear-gradient@2.8.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)):
+ react-native-shimmer-placeholder@2.0.9(prop-types@15.8.1)(react-native-linear-gradient@2.8.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)):
dependencies:
prop-types: 15.8.1
- react-native-linear-gradient: 2.8.3(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-linear-gradient: 2.8.3(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
- react-native-tab-view@4.2.0(react-native-pager-view@6.9.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-tab-view@4.2.2(react-native-pager-view@6.9.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4))(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- react-native-pager-view: 6.9.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- use-latest-callback: 0.2.6(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ react-native-pager-view: 6.9.1(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
+ use-latest-callback: 0.2.6(react@19.1.4)
- react-native-url-polyfill@2.0.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)):
+ react-native-url-polyfill@2.0.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)):
dependencies:
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
whatwg-url-without-unicode: 8.0.0-3
- react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-webview@13.15.0(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
escape-string-regexp: 4.0.0
invariant: 2.2.4
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
-
- react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
- dependencies:
- '@babel/core': 7.28.5
- '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5)
- '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+
+ react-native-worklets@0.7.4(@babel/core@7.29.0)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.29.0)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0)
+ '@babel/preset-typescript': 7.27.1(@babel/core@7.29.0)
convert-source-map: 2.0.0
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
- semver: 7.7.2
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
+ semver: 7.7.3
transitivePeerDependencies:
- supports-color
- react-native-zip-archive@6.1.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-zip-archive@6.1.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native-zip-archive@7.0.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-zip-archive@7.0.2(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4):
dependencies:
- react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0)
+ react: 19.1.4
+ react-native: 0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4)
- react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0):
+ react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4):
dependencies:
'@jest/create-cache-key-function': 29.7.0
- '@react-native/assets-registry': 0.81.5
- '@react-native/codegen': 0.81.5(@babel/core@7.28.5)
- '@react-native/community-cli-plugin': 0.81.5(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))
- '@react-native/gradle-plugin': 0.81.5
- '@react-native/js-polyfills': 0.81.5
- '@react-native/normalize-colors': 0.81.5
- '@react-native/virtualized-lists': 0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@react-native/metro-config@0.81.5(@babel/core@7.28.5))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-native/assets-registry': 0.81.6
+ '@react-native/codegen': 0.81.6(@babel/core@7.29.0)
+ '@react-native/community-cli-plugin': 0.81.6(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))
+ '@react-native/gradle-plugin': 0.81.6
+ '@react-native/js-polyfills': 0.81.6
+ '@react-native/normalize-colors': 0.81.6
+ '@react-native/virtualized-lists': 0.81.6(@types/react@19.1.17)(react-native@0.81.6(@babel/core@7.29.0)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@react-native/metro-config@0.81.6(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.4))(react@19.1.4)
abort-controller: 3.0.0
anser: 1.4.10
ansi-regex: 5.0.1
- babel-jest: 29.7.0(@babel/core@7.28.5)
+ babel-jest: 29.7.0(@babel/core@7.29.0)
babel-plugin-syntax-hermes-parser: 0.29.1
base64-js: 1.5.1
commander: 12.1.0
@@ -13504,12 +12262,12 @@ snapshots:
nullthrows: 1.1.1
pretty-format: 29.7.0
promise: 8.3.0
- react: 19.1.0
+ react: 19.1.4
react-devtools-core: 6.1.5
react-refresh: 0.14.2
regenerator-runtime: 0.13.11
scheduler: 0.26.0
- semver: 7.7.3
+ semver: 7.7.4
stacktrace-parser: 0.1.11
whatwg-fetch: 3.6.20
ws: 6.2.3
@@ -13526,7 +12284,7 @@ snapshots:
react-refresh@0.14.2: {}
- react@19.1.0: {}
+ react@19.1.4: {}
readable-stream@3.6.2:
dependencies:
@@ -13534,11 +12292,19 @@ snapshots:
string_decoder: 1.3.0
util-deprecate: 1.0.2
+ readable-stream@4.7.0:
+ dependencies:
+ abort-controller: 3.0.0
+ buffer: 6.0.3
+ events: 3.3.0
+ process: 0.11.10
+ string_decoder: 1.3.0
+
reflect.getprototypeof@1.0.10:
dependencies:
call-bind: 1.0.8
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-errors: 1.3.0
es-object-atoms: 1.1.1
get-intrinsic: 1.3.0
@@ -13583,6 +12349,10 @@ snapshots:
require-main-filename@2.0.0: {}
+ require-resolve@0.0.2:
+ dependencies:
+ x-path: 0.0.2
+
requireg@0.2.2:
dependencies:
nested-error-stacks: 2.0.1
@@ -13591,6 +12361,10 @@ snapshots:
reselect@4.1.8: {}
+ resolve-cwd@3.0.0:
+ dependencies:
+ resolve-from: 5.0.0
+
resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -13599,7 +12373,7 @@ snapshots:
dependencies:
global-dirs: 0.1.1
- resolve-workspace-root@2.0.0: {}
+ resolve-workspace-root@2.0.1: {}
resolve.exports@2.0.3: {}
@@ -13613,9 +12387,12 @@ snapshots:
dependencies:
path-parse: 1.0.7
- resolve@2.0.0-next.5:
+ resolve@2.0.0-next.6:
dependencies:
+ es-errors: 1.3.0
is-core-module: 2.16.1
+ node-exports-info: 1.6.0
+ object-keys: 1.1.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -13639,6 +12416,8 @@ snapshots:
rtl-detect@1.1.2: {}
+ run-applescript@7.1.0: {}
+
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
@@ -13670,7 +12449,7 @@ snapshots:
safer-buffer@2.1.2: {}
- sanitize-html@2.17.0:
+ sanitize-html@2.17.1:
dependencies:
deepmerge: 4.3.1
escape-string-regexp: 4.0.0
@@ -13679,35 +12458,17 @@ snapshots:
parse-srcset: 1.0.2
postcss: 8.5.6
- sax@1.4.3: {}
+ sax@1.4.4: {}
scheduler@0.26.0: {}
semver@6.3.1: {}
- semver@7.7.2: {}
-
semver@7.7.3: {}
- send@0.19.0:
- dependencies:
- debug: 2.6.9
- depd: 2.0.0
- destroy: 1.2.0
- encodeurl: 1.0.2
- escape-html: 1.0.3
- etag: 1.8.1
- fresh: 0.5.2
- http-errors: 2.0.0
- mime: 1.6.0
- ms: 2.1.3
- on-finished: 2.4.1
- range-parser: 1.2.1
- statuses: 2.0.1
- transitivePeerDependencies:
- - supports-color
+ semver@7.7.4: {}
- send@0.19.1:
+ send@0.19.2:
dependencies:
debug: 2.6.9
depd: 2.0.0
@@ -13716,23 +12477,23 @@ snapshots:
escape-html: 1.0.3
etag: 1.8.1
fresh: 0.5.2
- http-errors: 2.0.0
+ http-errors: 2.0.1
mime: 1.6.0
ms: 2.1.3
on-finished: 2.4.1
range-parser: 1.2.1
- statuses: 2.0.1
+ statuses: 2.0.2
transitivePeerDependencies:
- supports-color
serialize-error@2.1.0: {}
- serve-static@1.16.2:
+ serve-static@1.16.3:
dependencies:
encodeurl: 2.0.0
escape-html: 1.0.3
parseurl: 1.3.3
- send: 0.19.0
+ send: 0.19.2
transitivePeerDependencies:
- supports-color
@@ -13762,7 +12523,7 @@ snapshots:
setprototypeof@1.2.0: {}
- sf-symbols-typescript@2.1.0: {}
+ sf-symbols-typescript@2.2.0: {}
shebang-command@2.0.0:
dependencies:
@@ -13802,7 +12563,13 @@ snapshots:
signal-exit@3.0.7: {}
- signal-exit@4.1.0: {}
+ simple-concat@1.0.1: {}
+
+ simple-get@4.0.1:
+ dependencies:
+ decompress-response: 6.0.0
+ once: 1.4.0
+ simple-concat: 1.0.1
simple-plist@1.3.1:
dependencies:
@@ -13845,6 +12612,11 @@ snapshots:
source-map-js@1.2.1: {}
+ source-map-support@0.5.13:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
source-map-support@0.5.21:
dependencies:
buffer-from: 1.1.2
@@ -13858,6 +12630,8 @@ snapshots:
sprintf-js@1.0.3: {}
+ sprintf-js@1.1.3: {}
+
stack-utils@2.0.6:
dependencies:
escape-string-regexp: 2.0.0
@@ -13870,7 +12644,7 @@ snapshots:
statuses@1.5.0: {}
- statuses@2.0.1: {}
+ statuses@2.0.2: {}
stop-iteration-iterator@1.1.0:
dependencies:
@@ -13881,8 +12655,15 @@ snapshots:
strict-uri-encode@2.0.0: {}
+ strict-url-sanitise@0.0.1: {}
+
string-argv@0.3.2: {}
+ string-length@4.0.2:
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.1
+
string-natural-compare@3.0.1: {}
string-width@4.2.3:
@@ -13902,7 +12683,7 @@ snapshots:
call-bind: 1.0.8
call-bound: 1.0.4
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-errors: 1.3.0
es-object-atoms: 1.1.1
get-intrinsic: 1.3.0
@@ -13916,7 +12697,7 @@ snapshots:
string.prototype.repeat@1.0.0:
dependencies:
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
string.prototype.trim@1.2.10:
dependencies:
@@ -13924,7 +12705,7 @@ snapshots:
call-bound: 1.0.4
define-data-property: 1.1.4
define-properties: 1.2.1
- es-abstract: 1.24.0
+ es-abstract: 1.24.1
es-object-atoms: 1.1.1
has-property-descriptors: 1.0.2
@@ -13957,6 +12738,8 @@ snapshots:
dependencies:
ansi-regex: 6.2.2
+ strip-bom@4.0.0: {}
+
strip-final-newline@2.0.0: {}
strip-json-comments@2.0.1: {}
@@ -13967,14 +12750,14 @@ snapshots:
structured-headers@0.4.1: {}
- sucrase@3.35.0:
+ sucrase@3.35.1:
dependencies:
'@jridgewell/gen-mapping': 0.3.13
commander: 4.1.1
- glob: 10.5.0
lines-and-columns: 1.2.4
mz: 2.7.0
pirates: 4.0.7
+ tinyglobby: 0.2.15
ts-interface-checker: 0.1.13
supports-color@5.5.0:
@@ -13998,7 +12781,22 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- tar@7.5.2:
+ tar-fs@2.1.4:
+ dependencies:
+ chownr: 1.1.4
+ mkdirp-classic: 0.5.3
+ pump: 3.0.3
+ tar-stream: 2.2.0
+
+ tar-stream@2.2.0:
+ dependencies:
+ bl: 4.1.0
+ end-of-stream: 1.4.5
+ fs-constants: 1.0.0
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ tar@7.5.9:
dependencies:
'@isaacs/fs-minipass': 4.0.1
chownr: 3.0.0
@@ -14006,6 +12804,40 @@ snapshots:
minizlib: 3.1.0
yallist: 5.0.0
+ tarn@3.0.2: {}
+
+ tedious@18.6.2(@azure/core-client@1.10.1):
+ dependencies:
+ '@azure/core-auth': 1.10.1
+ '@azure/identity': 4.13.0
+ '@azure/keyvault-keys': 4.10.0(@azure/core-client@1.10.1)
+ '@js-joda/core': 5.7.0
+ '@types/node': 25.2.3
+ bl: 6.1.6
+ iconv-lite: 0.6.3
+ js-md4: 0.3.2
+ native-duplexpair: 1.0.0
+ sprintf-js: 1.1.3
+ transitivePeerDependencies:
+ - '@azure/core-client'
+ - supports-color
+
+ tedious@19.2.1(@azure/core-client@1.10.1):
+ dependencies:
+ '@azure/core-auth': 1.10.1
+ '@azure/identity': 4.13.0
+ '@azure/keyvault-keys': 4.10.0(@azure/core-client@1.10.1)
+ '@js-joda/core': 5.7.0
+ '@types/node': 25.2.3
+ bl: 6.1.6
+ iconv-lite: 0.7.2
+ js-md4: 0.3.2
+ native-duplexpair: 1.0.0
+ sprintf-js: 1.1.3
+ transitivePeerDependencies:
+ - '@azure/core-client'
+ - supports-color
+
temp-dir@2.0.0: {}
terminal-link@2.1.1:
@@ -14013,7 +12845,7 @@ snapshots:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
- terser@5.44.1:
+ terser@5.46.0:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.15.0
@@ -14040,6 +12872,11 @@ snapshots:
through@2.3.8: {}
+ tinyglobby@0.2.15:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+
tmpl@1.0.5: {}
to-regex-range@5.0.1:
@@ -14052,6 +12889,10 @@ snapshots:
dependencies:
typescript: 5.9.3
+ ts-api-utils@2.4.0(typescript@5.9.3):
+ dependencies:
+ typescript: 5.9.3
+
ts-interface-checker@0.1.13: {}
tslib@1.14.1: {}
@@ -14063,6 +12904,10 @@ snapshots:
tslib: 1.14.1
typescript: 5.9.3
+ tunnel-agent@0.6.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -14124,7 +12969,7 @@ snapshots:
undici-types@7.16.0: {}
- undici@6.22.0: {}
+ undici@6.23.0: {}
unicode-canonical-property-names-ecmascript@2.0.1: {}
@@ -14147,9 +12992,9 @@ snapshots:
unpipe@1.0.0: {}
- update-browserslist-db@1.1.4(browserslist@4.28.0):
+ update-browserslist-db@1.2.3(browserslist@4.28.1):
dependencies:
- browserslist: 4.28.0
+ browserslist: 4.28.1
escalade: 3.2.0
picocolors: 1.1.1
@@ -14161,13 +13006,13 @@ snapshots:
dependencies:
iconv-lite: 0.6.3
- use-latest-callback@0.2.6(react@19.1.0):
+ use-latest-callback@0.2.6(react@19.1.4):
dependencies:
- react: 19.1.0
+ react: 19.1.4
- use-sync-external-store@1.6.0(react@19.1.0):
+ use-sync-external-store@1.6.0(react@19.1.4):
dependencies:
- react: 19.1.0
+ react: 19.1.4
util-deprecate@1.0.2: {}
@@ -14177,12 +13022,20 @@ snapshots:
is-arguments: 1.2.0
is-generator-function: 1.1.2
is-typed-array: 1.1.15
- which-typed-array: 1.1.19
+ which-typed-array: 1.1.20
utils-merge@1.0.1: {}
uuid@7.0.3: {}
+ uuid@8.3.2: {}
+
+ v8-to-istanbul@9.3.0:
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ '@types/istanbul-lib-coverage': 2.0.6
+ convert-source-map: 2.0.0
+
validate-npm-package-name@5.0.1: {}
vary@1.1.2: {}
@@ -14231,7 +13084,7 @@ snapshots:
isarray: 2.0.5
which-boxed-primitive: 1.1.1
which-collection: 1.0.2
- which-typed-array: 1.1.19
+ which-typed-array: 1.1.20
which-collection@1.0.2:
dependencies:
@@ -14242,7 +13095,7 @@ snapshots:
which-module@2.0.1: {}
- which-typed-array@1.1.19:
+ which-typed-array@1.1.20:
dependencies:
available-typed-arrays: 1.0.7
call-bind: 1.0.8
@@ -14272,12 +13125,6 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
- wrap-ansi@8.1.0:
- dependencies:
- ansi-styles: 6.2.3
- string-width: 5.1.2
- strip-ansi: 7.1.2
-
wrappy@1.0.2: {}
write-file-atomic@4.0.2:
@@ -14291,7 +13138,15 @@ snapshots:
ws@7.5.10: {}
- ws@8.18.3: {}
+ ws@8.19.0: {}
+
+ wsl-utils@0.1.0:
+ dependencies:
+ is-wsl: 3.1.1
+
+ x-path@0.0.2:
+ dependencies:
+ path-extra: 1.0.3
xcode@3.0.1:
dependencies:
@@ -14300,7 +13155,7 @@ snapshots:
xml2js@0.6.0:
dependencies:
- sax: 1.4.3
+ sax: 1.4.4
xmlbuilder: 11.0.1
xmlbuilder@11.0.1: {}
@@ -14317,7 +13172,7 @@ snapshots:
yaml@1.10.2: {}
- yaml@2.8.1: {}
+ yaml@2.8.2: {}
yargs-parser@18.1.3:
dependencies:
@@ -14354,8 +13209,8 @@ snapshots:
yocto-queue@1.2.2: {}
- zod-to-json-schema@3.25.0(zod@3.25.76):
+ zod-validation-error@4.0.2(zod@4.3.6):
dependencies:
- zod: 3.25.76
+ zod: 4.3.6
- zod@3.25.76: {}
+ zod@4.3.6: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000000..0900ce43a0
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,4 @@
+onlyBuiltDependencies:
+ - better-sqlite3
+ - esbuild
+ - protobufjs
diff --git a/src/components/ListView.tsx b/src/components/ListView.tsx
index 0dddeebf34..48234979d2 100644
--- a/src/components/ListView.tsx
+++ b/src/components/ListView.tsx
@@ -44,7 +44,7 @@ const ListView = ({
>
diff --git a/src/components/NovelCover.tsx b/src/components/NovelCover.tsx
index f6621926fa..eebb9cb10f 100644
--- a/src/components/NovelCover.tsx
+++ b/src/components/NovelCover.tsx
@@ -25,16 +25,15 @@ import { defaultCover } from '@plugins/helpers/constants';
import { ActivityIndicator } from 'react-native-paper';
interface UnreadBadgeProps {
- chaptersDownloaded: number;
- chaptersUnread: number;
showDownloadBadges: boolean;
+ chaptersDownloaded: number | null;
+ chaptersUnread: number;
theme: ThemeColors;
}
-
interface DownloadBadgeProps {
- chaptersDownloaded: number;
- chaptersUnread: number;
showUnreadBadges: boolean;
+ chaptersDownloaded: number;
+ chaptersUnread: number | null;
theme: ThemeColors;
}
@@ -176,7 +175,9 @@ function NovelCover<
{libraryStatus ? : null}
{isFromDB(item) ? (
<>
- {showDownloadBadges && item.chaptersDownloaded > 0 ? (
+ {showDownloadBadges &&
+ item.chaptersDownloaded &&
+ item.chaptersDownloaded > 0 ? (
) : null}
- {showUnreadBadges && item.chaptersUnread > 0 ? (
+ {showUnreadBadges &&
+ item.chaptersUnread &&
+ item.chaptersUnread > 0 ? (
(
);
-interface BadgeProps {
- chaptersDownloaded: number;
- chaptersUnread: number;
- theme: ThemeColors;
-}
-interface UnreadBadgeProps extends BadgeProps {
- showDownloadBadges: boolean;
-}
-interface DownloadBadgeProps extends BadgeProps {
- showUnreadBadges: boolean;
-}
-
const UnreadBadge: React.FC = ({
chaptersDownloaded,
chaptersUnread,
diff --git a/src/database/__tests__/db.test.ts b/src/database/__tests__/db.test.ts
new file mode 100644
index 0000000000..f54c9eac26
--- /dev/null
+++ b/src/database/__tests__/db.test.ts
@@ -0,0 +1,264 @@
+import Database from 'better-sqlite3';
+import { drizzle } from 'drizzle-orm/op-sqlite';
+import { migrate } from 'drizzle-orm/op-sqlite/migrator';
+import migrations from '../../../drizzle/migrations';
+import { schema } from '@database/schema';
+
+jest.mock('@op-engineering/op-sqlite', () => ({
+ __esModule: true,
+ open: jest.fn(() => ({
+ execute: jest.fn().mockResolvedValue({ rows: [] }),
+ executeAsync: jest.fn().mockResolvedValue({ rows: [] }),
+ executeSync: jest.fn().mockReturnValue({ rows: [] }),
+ executeRawAsync: jest.fn().mockResolvedValue([]),
+ executeBatch: jest.fn().mockResolvedValue(undefined),
+ flushPendingReactiveQueries: jest.fn(),
+ reactiveExecute: jest.fn(() => () => undefined),
+ })),
+}));
+
+import { runDatabaseBootstrap } from '@database/db';
+
+const MIGRATION_STATEMENTS = [
+ `CREATE TABLE IF NOT EXISTS Category (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ name text NOT NULL,
+ sort integer
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS category_name_unique ON Category (name)`,
+ `CREATE INDEX IF NOT EXISTS category_sort_idx ON Category (sort)`,
+ `CREATE TABLE IF NOT EXISTS Chapter (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ novelId integer NOT NULL,
+ path text NOT NULL,
+ name text NOT NULL,
+ releaseTime text,
+ bookmark integer DEFAULT false,
+ unread integer DEFAULT true,
+ readTime text,
+ isDownloaded integer DEFAULT false,
+ updatedTime text,
+ chapterNumber real,
+ page text DEFAULT '1',
+ position integer DEFAULT 0,
+ progress integer
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS chapter_novel_path_unique ON Chapter (novelId, path)`,
+ `CREATE INDEX IF NOT EXISTS chapterNovelIdIndex ON Chapter (novelId, position, page, id)`,
+ `CREATE TABLE IF NOT EXISTS Novel (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ path text NOT NULL,
+ pluginId text NOT NULL,
+ name text NOT NULL,
+ cover text,
+ summary text,
+ author text,
+ artist text,
+ status text DEFAULT 'Unknown',
+ genres text,
+ inLibrary integer DEFAULT false,
+ isLocal integer DEFAULT false,
+ totalPages integer DEFAULT 0,
+ chaptersDownloaded integer DEFAULT 0,
+ chaptersUnread integer DEFAULT 0,
+ totalChapters integer DEFAULT 0,
+ lastReadAt text,
+ lastUpdatedAt text
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS novel_path_plugin_unique ON Novel (path, pluginId)`,
+ `CREATE INDEX IF NOT EXISTS NovelIndex ON Novel (pluginId, path, id, inLibrary)`,
+ `CREATE TABLE IF NOT EXISTS NovelCategory (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ novelId integer NOT NULL,
+ categoryId integer NOT NULL
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS novel_category_unique ON NovelCategory (novelId, categoryId)`,
+ `CREATE TABLE IF NOT EXISTS Repository (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ url text NOT NULL
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS repository_url_unique ON Repository (url)`,
+];
+
+const createExecutor = (sqlite: Database.Database) => ({
+ executeSync: (sql: string, params?: unknown[]) => {
+ if (params && params.length) {
+ const stmt = sqlite.prepare(sql);
+ stmt.run(params as any[]);
+ return;
+ }
+ sqlite.exec(sql);
+ },
+});
+
+const createOpSqliteAdapter = (sqlite: Database.Database) => {
+ return {
+ execute: async (sql: string, params?: unknown[]) => {
+ const stmt = sqlite.prepare(sql);
+ const rows =
+ params && params.length ? stmt.all(params as any[]) : stmt.all();
+ return {
+ rows: {
+ _array: rows.map(row =>
+ Object.values(row as Record),
+ ),
+ },
+ };
+ },
+ executeSync: (sql: string, params?: unknown[]) => {
+ const stmt = sqlite.prepare(sql);
+ const result =
+ params && params.length ? stmt.run(params as any[]) : stmt.run();
+ return { rows: [], rowsAffected: result.changes ?? 0 };
+ },
+ executeAsync: async (sql: string, params?: unknown[]) => {
+ const stmt = sqlite.prepare(sql);
+ const result =
+ params && params.length ? stmt.run(params as any[]) : stmt.run();
+ return { rows: [], rowsAffected: result.changes ?? 0 };
+ },
+ executeRawAsync: async (sql: string, params?: unknown[]) => {
+ const stmt = sqlite.prepare(sql).raw();
+ const rows =
+ params && params.length ? stmt.all(params as any[]) : stmt.all();
+ return rows as unknown[][];
+ },
+ executeBatch: async (
+ commands: Array<[string, unknown[] | unknown[][]]>,
+ ) => {
+ const transaction = sqlite.transaction((cmds: typeof commands) => {
+ for (const cmd of cmds) {
+ const stmt = sqlite.prepare(cmd[0]);
+ if (Array.isArray(cmd[1])) {
+ for (const arg of cmd[1]) {
+ stmt.run(arg as any[]);
+ }
+ } else {
+ stmt.run(cmd[1] as any[]);
+ }
+ }
+ });
+ transaction(commands);
+ },
+ flushPendingReactiveQueries: () => undefined,
+ reactiveExecute: () => () => undefined,
+ };
+};
+
+describe('new database initialization', () => {
+ it('creates schema, triggers, and default data', async () => {
+ const sqlite = new Database(':memory:');
+ try {
+ const adapter = createOpSqliteAdapter(sqlite);
+ const drizzleDb = drizzle(adapter, { schema });
+
+ await migrate(drizzleDb, migrations);
+ runDatabaseBootstrap(createExecutor(sqlite));
+
+ const tables = sqlite
+ .prepare("SELECT name FROM sqlite_master WHERE type='table'")
+ .all() as Array<{ name: string }>;
+ const tableNames = tables.map(table => table.name);
+ expect(tableNames).toEqual(
+ expect.arrayContaining([
+ 'Category',
+ 'Chapter',
+ 'Novel',
+ 'NovelCategory',
+ 'Repository',
+ ]),
+ );
+
+ const triggers = sqlite
+ .prepare("SELECT name FROM sqlite_master WHERE type='trigger'")
+ .all() as Array<{ name: string }>;
+ const triggerNames = triggers.map(trigger => trigger.name);
+ expect(triggerNames).toEqual(
+ expect.arrayContaining([
+ 'update_novel_stats',
+ 'update_novel_stats_on_update',
+ 'update_novel_stats_on_delete',
+ 'add_category',
+ ]),
+ );
+
+ const categories = sqlite
+ .prepare('SELECT id, name FROM Category ORDER BY id')
+ .all() as Array<{ id: number; name: string }>;
+ expect(categories.map(category => category.id)).toEqual([1, 2]);
+ } finally {
+ sqlite.close();
+ }
+ });
+});
+
+describe('runDatabaseBootstrap', () => {
+ it('applies pragmas, triggers, and default categories', () => {
+ const sqlite = new Database(':memory:');
+ try {
+ for (const statement of MIGRATION_STATEMENTS) {
+ sqlite.exec(statement.trim());
+ }
+
+ runDatabaseBootstrap(createExecutor(sqlite));
+
+ const journalMode = sqlite.pragma('journal_mode', { simple: true });
+ expect(['wal', 'memory']).toContain(String(journalMode).toLowerCase());
+
+ const triggers = sqlite
+ .prepare("SELECT name FROM sqlite_master WHERE type='trigger'")
+ .all() as Array<{ name: string }>;
+ const triggerNames = triggers.map(trigger => trigger.name);
+ expect(triggerNames).toEqual(
+ expect.arrayContaining([
+ 'update_novel_stats',
+ 'update_novel_stats_on_update',
+ 'update_novel_stats_on_delete',
+ 'add_category',
+ ]),
+ );
+
+ const categories = sqlite
+ .prepare('SELECT id, name FROM Category ORDER BY id')
+ .all() as Array<{ id: number; name: string }>;
+ expect(categories.map(category => category.id)).toEqual([1, 2]);
+ expect(categories.map(category => category.name)).toEqual([
+ 'categories.default',
+ 'categories.local',
+ ]);
+ } finally {
+ sqlite.close();
+ }
+ });
+});
+
+describe('production migrations', () => {
+ it('can run after test schema exists', async () => {
+ const sqlite = new Database(':memory:');
+ try {
+ for (const statement of MIGRATION_STATEMENTS) {
+ sqlite.exec(statement.trim());
+ }
+
+ const adapter = createOpSqliteAdapter(sqlite);
+ const drizzleDb = drizzle(adapter, { schema });
+ await migrate(drizzleDb, migrations);
+
+ const tables = sqlite
+ .prepare("SELECT name FROM sqlite_master WHERE type='table'")
+ .all() as Array<{ name: string }>;
+ const tableNames = tables.map(table => table.name);
+ expect(tableNames).toEqual(
+ expect.arrayContaining([
+ 'Category',
+ 'Chapter',
+ 'Novel',
+ 'NovelCategory',
+ 'Repository',
+ ]),
+ );
+ } finally {
+ sqlite.close();
+ }
+ });
+});
diff --git a/src/database/constants.ts b/src/database/constants.ts
new file mode 100644
index 0000000000..e5d9b31573
--- /dev/null
+++ b/src/database/constants.ts
@@ -0,0 +1,30 @@
+export const CHAPTER_ORDER = {
+ readTimeAsc: 'readTime ASC',
+ readTimeDesc: 'readTime DESC',
+ positionAsc: 'position ASC',
+ positionDesc: 'position DESC',
+ nameAsc: 'name ASC',
+ nameDesc: 'name DESC',
+} as const;
+
+export type ChapterOrderKey = keyof typeof CHAPTER_ORDER;
+export type ChapterOrder = (typeof CHAPTER_ORDER)[ChapterOrderKey];
+
+const CHAPTER_FILTER_POSITIVE = {
+ downloaded: 'isDownloaded=1',
+ read: '`unread`=0',
+ bookmarked: 'bookmark=1',
+} as const;
+const CHAPTER_FILTER_NOT = {
+ 'not-downloaded': 'isDownloaded=0',
+ 'not-read': '`unread`=1',
+ 'not-bookmarked': 'bookmark=0',
+} as const;
+export const CHAPTER_FILTER = {
+ ...CHAPTER_FILTER_POSITIVE,
+ ...CHAPTER_FILTER_NOT,
+} as const;
+
+export type ChapterFilterPositiveKey = keyof typeof CHAPTER_FILTER_POSITIVE;
+export type ChapterFilterKey = keyof typeof CHAPTER_FILTER;
+export type ChapterFilter = (typeof CHAPTER_FILTER)[ChapterFilterKey];
diff --git a/src/database/db.ts b/src/database/db.ts
index 947f59b6b2..c75233d745 100644
--- a/src/database/db.ts
+++ b/src/database/db.ts
@@ -1,115 +1,142 @@
-import * as SQLite from 'expo-sqlite';
+/* eslint-disable no-console */
+import { drizzle } from 'drizzle-orm/op-sqlite';
+
+import { schema } from './schema';
+import { Logger } from 'drizzle-orm';
+
+import { migrate } from 'drizzle-orm/op-sqlite/migrator';
+import migrations from '../../drizzle/migrations';
+import { createDbManager } from './manager/manager';
+import { open } from '@op-engineering/op-sqlite';
+import { createCategoryDefaultQuery } from './queryStrings/populate';
import {
- createCategoriesTableQuery,
- createCategoryDefaultQuery,
createCategoryTriggerQuery,
-} from './tables/CategoryTable';
-import {
- createNovelIndexQuery,
- createNovelTableQuery,
createNovelTriggerQueryDelete,
createNovelTriggerQueryInsert,
createNovelTriggerQueryUpdate,
- dropNovelIndexQuery,
-} from './tables/NovelTable';
-import { createNovelCategoryTableQuery } from './tables/NovelCategoryTable';
-import {
- createChapterTableQuery,
- createChapterIndexQuery,
- dropChapterIndexQuery,
-} from './tables/ChapterTable';
-
-import { createRepositoryTableQuery } from './tables/RepositoryTable';
-import { getErrorMessage } from '@utils/error';
-import { showToast } from '@utils/showToast';
-import { MigrationRunner } from './utils/migrationRunner';
-import { migrations } from './migrations';
+} from './queryStrings/triggers';
+import { useEffect, useReducer } from 'react';
-const dbName = 'lnreader.db';
+class MyLogger implements Logger {
+ logQuery(_query: string, _params: unknown[]): void {
+ //console.trace('DB Query: ', { query, params });
+ }
+}
-export const db = SQLite.openDatabaseSync(dbName);
+const DB_NAME = 'lnreader.db';
+const _db = open({ name: DB_NAME, location: '../files/SQLite' });
/**
- * Creates the initial database schema for fresh installations
- * Sets up all tables, indexes, triggers and sets version to 2
+ * Raw SQLite database instance
+ * @deprecated Use `drizzleDb` for new code
*/
-const createInitialSchema = () => {
- db.execSync('PRAGMA journal_mode = WAL');
- db.execSync('PRAGMA synchronous = NORMAL');
- db.execSync('PRAGMA temp_store = MEMORY');
-
- db.withTransactionSync(() => {
- db.runSync(createNovelTableQuery);
- db.runSync(createNovelIndexQuery);
- db.runSync(createCategoriesTableQuery);
- db.runSync(createCategoryDefaultQuery);
- db.runSync(createNovelCategoryTableQuery);
- db.runSync(createChapterTableQuery);
- db.runSync(createCategoryTriggerQuery);
- db.runSync(createChapterIndexQuery);
- db.runSync(createRepositoryTableQuery);
- db.runSync(createNovelTriggerQueryInsert);
- db.runSync(createNovelTriggerQueryUpdate);
- db.runSync(createNovelTriggerQueryDelete);
-
- db.execSync('PRAGMA user_version = 2');
- });
-};
+export const db = _db;
/**
- * Initializes the database with optimal settings and runs any pending migrations
- * Handles both fresh installations and existing databases
+ * Drizzle ORM database instance with type-safe query builder
+ * Use this for all new database operations
*/
-export const initializeDatabase = () => {
- db.execSync('PRAGMA busy_timeout = 5000');
- db.execSync('PRAGMA cache_size = 10000');
- db.execSync('PRAGMA foreign_keys = ON');
+export const drizzleDb = drizzle(_db, {
+ schema,
+ logger: __DEV__ ? new MyLogger() : false,
+});
- let userVersion = 0;
- try {
- const result = db.getFirstSync<{ user_version: number }>(
- 'PRAGMA user_version',
- );
- userVersion = result?.user_version ?? 0;
- } catch (error) {
- // If PRAGMA query fails, assume fresh database
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.warn(
- 'Failed to get database version, assuming fresh install:',
- error,
- );
- }
- userVersion = 0;
- }
+export const dbManager = createDbManager(drizzleDb);
- if (userVersion === 0) {
- createInitialSchema();
- }
+type SqlExecutor = {
+ executeSync: (
+ sql: string,
+ params?: Parameters[1],
+ ) => void;
+};
+
+const setPragmas = (executor: SqlExecutor) => {
+ console.log('Setting database Pragmas');
+ const queries = [
+ 'PRAGMA journal_mode = WAL',
+ 'PRAGMA synchronous = NORMAL',
+ 'PRAGMA temp_store = MEMORY',
+ 'PRAGMA busy_timeout = 5000',
+ 'PRAGMA cache_size = 10000',
+ 'PRAGMA foreign_keys = ON',
+ ];
+ executor.executeSync(queries.join(';\n'));
+};
+const populateDatabase = (executor: SqlExecutor) => {
+ console.log('Populating database');
+ executor.executeSync(createCategoryDefaultQuery);
+};
- const migrationRunner = new MigrationRunner(migrations);
- migrationRunner.runMigrations(db);
+const createDbTriggers = (executor: SqlExecutor) => {
+ console.log('Creating database triggers');
+ executor.executeSync(createCategoryTriggerQuery);
+ executor.executeSync(createNovelTriggerQueryDelete);
+ executor.executeSync(createNovelTriggerQueryInsert);
+ executor.executeSync(createNovelTriggerQueryUpdate);
};
-export const recreateDatabaseIndexes = () => {
- try {
- db.execSync('PRAGMA analysis_limit=4000');
- db.execSync('PRAGMA optimize');
+export const runDatabaseBootstrap = (executor: SqlExecutor) => {
+ setPragmas(executor);
+ createDbTriggers(executor);
+ populateDatabase(executor);
+};
- db.execSync('PRAGMA journal_mode = WAL');
- db.execSync('PRAGMA foreign_keys = ON');
- db.execSync('PRAGMA synchronous = NORMAL');
- db.execSync('PRAGMA cache_size = 10000');
- db.execSync('PRAGMA temp_store = MEMORY');
- db.execSync('PRAGMA busy_timeout = 5000');
+type InitDbState = {
+ success?: boolean;
+ error?: Error;
+};
- db.withTransactionSync(() => {
- db.runSync(dropNovelIndexQuery);
- db.runSync(dropChapterIndexQuery);
- db.runSync(createNovelIndexQuery);
- db.runSync(createChapterIndexQuery);
- });
- } catch (error: unknown) {
- showToast(getErrorMessage(error));
- }
+export const useInitDatabase = () => {
+ const initialState = {
+ success: false,
+ error: undefined,
+ };
+ const fetchReducer = (
+ state$1: InitDbState,
+ action:
+ | {
+ type: 'migrating' | 'migrated';
+ payload?: boolean | undefined;
+ }
+ | {
+ type: 'error';
+ payload: Error;
+ },
+ ) => {
+ switch (action.type) {
+ case 'migrating':
+ return { ...initialState };
+ case 'migrated':
+ return {
+ ...initialState,
+ success: action.payload,
+ };
+ case 'error':
+ return {
+ ...initialState,
+ error: action.payload,
+ };
+ default:
+ return state$1;
+ }
+ };
+ const [state, dispatch] = useReducer(fetchReducer, initialState);
+ useEffect(() => {
+ dispatch({ type: 'migrating' });
+ migrate(drizzleDb, migrations)
+ .then(() => {
+ runDatabaseBootstrap(_db);
+ dispatch({
+ type: 'migrated',
+ payload: true,
+ });
+ })
+ .catch((error: Error) => {
+ dispatch({
+ type: 'error',
+ payload: error,
+ });
+ });
+ }, []);
+ return state;
};
diff --git a/src/database/manager/manager.d.ts b/src/database/manager/manager.d.ts
new file mode 100644
index 0000000000..4e5eda3319
--- /dev/null
+++ b/src/database/manager/manager.d.ts
@@ -0,0 +1,274 @@
+// db-manager.types.ts
+import type { SQLiteTransaction, TablesRelationalConfig } from 'drizzle-orm';
+
+// Define the TransactionParameter type based on your DrizzleDb
+export type TransactionParameter = SQLiteTransaction<
+ 'async',
+ { changes: number; lastInsertRowid: number } | void,
+ Record,
+ TablesRelationalConfig
+>;
+
+/**
+ * Interface defining the public API and documentation for the Drizzle database manager.
+ * This contract ensures consistent documentation and type safety across the application.
+ */
+export interface IDbManager {
+ /**
+ * Creates a subquery that defines a temporary named result set as a CTE.
+ *
+ * It is useful for breaking down complex queries into simpler parts and for reusing the result set in subsequent parts of the query.
+ *
+ * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}
+ *
+ * @param alias The alias for the subquery.
+ *
+ * Failure to provide an alias will result in a DrizzleTypeError, preventing the subquery from being referenced in other queries.
+ *
+ * @example
+ *
+ * ```ts
+ * // Create a subquery with alias 'sq' and use it in the select query
+ * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));
+ *
+ * const result = await db.with(sq).select().from(sq);
+ * ```
+ *
+ * To select arbitrary SQL values as fields in a CTE and reference them in other CTEs or in the main query, you need to add aliases to them:
+ *
+ * ```ts
+ * // Select an arbitrary SQL value as a field in a CTE and reference it in the main query
+ * const sq = db.$with('sq').as(db.select({
+ * name: sql`upper(${users.name})`.as('name'),
+ * })
+ * .from(users));
+ *
+ * const result = await db.with(sq).select({ name: sq.name }).from(sq);
+ * ```
+ */
+ $with: any;
+
+ /**
+ * Builds a count query.
+ *
+ * This method is used to count the number of rows that match a specific condition.
+ * It can be used with a table, view, or raw SQL expression as the source.
+ *
+ * @param source The table, view, SQL, or SQLWrapper to count from.
+ * @param filters Optional SQL expression for filtering rows before counting.
+ * @returns A query builder for counting data.
+ *
+ * @example
+ * ```ts
+ * // Count all users
+ * const totalUsers = await db.$count(users);
+ *
+ * // Count active users
+ * const activeUsers = await db.$count(users, eq(users.status, 'active'));
+ * ```
+ */
+ $count: any;
+
+ /**
+ * Provides access to relational queries defined by your Drizzle schema.
+ *
+ * This object allows you to build complex queries involving relations between tables,
+ * leveraging the schema you've defined.
+ *
+ * See docs: {@link https://orm.drizzle.team/docs/relations}
+ */
+ readonly query: any;
+
+ /**
+ * Incorporates a previously defined CTE (using `$with`) into the main query.
+ *
+ * This method allows the main query to reference a temporary named result set.
+ *
+ * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}
+ *
+ * @param queries The CTEs to incorporate into the main query.
+ *
+ * @example
+ *
+ * ```ts
+ * // Define a subquery 'sq' as a CTE using $with
+ * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));
+ *
+ * // Incorporate the CTE 'sq' into the main query and select from it
+ * const result = await db.with(sq).select().from(sq);
+ * ```
+ */
+ with: any;
+
+ /**
+ * Creates a select query.
+ *
+ * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.
+ *
+ * Use `.from()` method to specify which table to select from.
+ *
+ * See docs: {@link https://orm.drizzle.team/docs/select}
+ *
+ * @param fields The selection object.
+ *
+ * @example
+ *
+ * ```ts
+ * // Select all columns and all rows from the 'cars' table
+ * const allCars: Car[] = await db.select().from(cars);
+ *
+ * // Select specific columns and all rows from the 'cars' table
+ * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({
+ * id: cars.id,
+ * brand: cars.brand
+ * })
+ * .from(cars);
+ * ```
+ *
+ * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:
+ *
+ * ```ts
+ * // Select specific columns along with expression and all rows from the 'cars' table
+ * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({
+ * id: cars.id,
+ * lowerBrand: sql`lower(${cars.brand})`,
+ * })
+ * .from(cars);
+ * ```
+ */
+ select: any;
+
+ /**
+ * Adds `distinct` expression to the select query.
+ *
+ * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.
+ *
+ * Use `.from()` method to specify which table to select from.
+ *
+ * See docs: {@link https://orm.drizzle.team/docs/select#distinct}
+ *
+ * @param fields The selection object.
+ *
+ * @example
+ *
+ * ```ts
+ * // Select all unique rows from the 'cars' table
+ * await db.selectDistinct()
+ * .from(cars)
+ * .orderBy(cars.id, cars.brand, cars.color);
+ *
+ * // Select all unique brands from the 'cars' table
+ * await db.selectDistinct({ brand: cars.brand })
+ * .from(cars)
+ * .orderBy(cars.brand);
+ * ```
+ */
+ selectDistinct: any;
+
+ /**
+ * Executes a raw SQL query or an {@link SQLWrapper} expression.
+ *
+ * This method is suitable for queries that don't return rows (e.g., DDL statements,
+ * or operations that only return affected rows/last insert ID).
+ *
+ * @param query The SQL query or {@link SQLWrapper} to execute.
+ * @returns A promise resolving to the database result, which typically includes
+ * information about the operation's effect (e.g., number of affected rows).
+ *
+ * @example
+ * ```ts
+ * await db.run(sql`DELETE FROM users WHERE id = 1`);
+ * ```
+ *
+ * @see https://orm.drizzle.team/docs/advanced-queries#run-raw-sql
+ */
+ run: any;
+
+ /**
+ * Executes a raw SQL query or an {@link SQLWrapper} expression and returns all resulting rows.
+ *
+ * This is useful for fetching multiple records that don't fit into Drizzle's ORM builders,
+ * or when you need full control over the SQL.
+ *
+ * @param query The SQL query or {@link SQLWrapper} to execute.
+ * @returns A promise resolving to an array of results, with each element typed as `T`.
+ * Defaults to `unknown[]` if `T` is not specified.
+ *
+ * @example
+ * ```ts
+ * const users = await db.all<{ id: number; name: string }>(sql`SELECT id, name FROM users`);
+ * ```
+ *
+ * @see https://orm.drizzle.team/docs/advanced-queries#run-raw-sql
+ */
+ all: any;
+
+ /**
+ * Executes a raw SQL query or an {@link SQLWrapper} expression and returns a single row.
+ *
+ * This is ideal for queries expected to return zero or one record.
+ *
+ * @param query The SQL query or {@link SQLWrapper} to execute.
+ * @returns A promise resolving to a single result of type `T`, or `undefined` if no row is found.
+ * Defaults to `unknown` if `T` is not specified.
+ *
+ * @example
+ * ```ts
+ * const user = await db.get<{ id: number; name: string }>(sql`SELECT id, name FROM users WHERE id = 1`);
+ * ```
+ *
+ * @see https://orm.drizzle.team/docs/advanced-queries#run-raw-sql
+ */
+ get: any;
+
+ /**
+ * Executes a raw SQL query or an {@link SQLWrapper} expression and returns all results as an array of arrays (values).
+ *
+ * This is typically used when you only need the raw column values without column names,
+ * often for performance or specific driver requirements.
+ *
+ * @param query The SQL query or {@link SQLWrapper} to execute.
+ * @returns A promise resolving to an array of arrays, where each inner array represents
+ * a row's values. Defaults to `unknown[]` if `T` is not specified.
+ *
+ * @example
+ * ```ts
+ * const userValues = await db.values<[number, string]>(sql`SELECT id, name FROM users`);
+ * // userValues might look like [[1, 'Alice'], [2, 'Bob']]
+ * ```
+ *
+ * @see https://orm.drizzle.team/docs/advanced-queries#run-raw-sql
+ */
+ values: any;
+
+ /**
+ * Executes a series of database operations within a single transaction.
+ *
+ * All operations within the provided function will either succeed completely or fail completely,
+ * ensuring data integrity.
+ *
+ * See docs: {@link https://orm.drizzle.team/docs/transactions}
+ *
+ * @param transaction A function containing the database operations to be performed within the transaction.
+ * It receives a transaction client (`tx`) as an argument.
+ * @param config Optional configuration for the transaction (e.g., isolation level).
+ * @returns A promise resolving to the result of the `transaction` function.
+ *
+ * @example
+ * ```ts
+ * await db.transaction(async (tx) => {
+ * await tx.insert(users).values({ name: 'Alice' });
+ * await tx.update(products).set({ stock: 0 }).where(eq(products.id, 1));
+ * });
+ * ```
+ */
+ transaction: any;
+
+ /**
+ * Performs write operations within a transaction.
+ * This method ensures atomicity for a block of operations that modify data.
+ *
+ * (No specific documentation beyond this general description as per request)
+ */
+ write(fn: (tx: TransactionParameter) => Promise): Promise;
+}
diff --git a/src/database/manager/manager.ts b/src/database/manager/manager.ts
new file mode 100644
index 0000000000..1d8667ad07
--- /dev/null
+++ b/src/database/manager/manager.ts
@@ -0,0 +1,163 @@
+import { db, drizzleDb } from '@database/db';
+import { IDbManager } from './manager.d';
+import { DbTaskQueue } from './queue';
+import { Schema } from '../schema';
+import { useEffect, useState } from 'react';
+import { GetSelectTableName } from 'drizzle-orm/query-builders/select.types';
+import { AnyColumn, Placeholder, Query, sql } from 'drizzle-orm';
+import { SQLitePreparedQuery } from 'drizzle-orm/sqlite-core';
+
+type DrizzleDb = typeof drizzleDb;
+type TransactionParameter = Parameters<
+ Parameters[0]
+>[0];
+
+interface ExecutableSelect {
+ toSQL(): Query;
+ all(): Promise; // Or TResult[] if you are using a synchronous driver
+ get(): Promise;
+}
+
+let _dbManager: DbManager;
+
+export function castInt(value: number | string | AnyColumn) {
+ return sql`CAST(${value} AS INTEGER)`;
+}
+
+class DbManager implements IDbManager {
+ private readonly db: DrizzleDb;
+ private readonly queue: DbTaskQueue;
+
+ public readonly select: DrizzleDb['select'];
+ public readonly selectDistinct: DrizzleDb['selectDistinct'];
+ public readonly $count: DrizzleDb['$count'];
+ public readonly query: DrizzleDb['query'];
+ public readonly run: DrizzleDb['run'];
+ public readonly transaction: DrizzleDb['transaction'];
+ public readonly with: DrizzleDb['with'];
+ public readonly $with: DrizzleDb['$with'];
+ public readonly all: DrizzleDb['all'];
+ public readonly get: DrizzleDb['get'];
+ public readonly values: DrizzleDb['values'];
+
+ private constructor(dbInstance: DrizzleDb) {
+ this.db = dbInstance;
+ this.queue = new DbTaskQueue();
+ this.select = this.db.select.bind(this.db);
+ this.selectDistinct = this.db.selectDistinct.bind(this.db);
+ this.$count = this.db.$count.bind(this.db);
+ this.query = this.db.query;
+ this.run = this.db.run.bind(this.db);
+ this.transaction = this.db.transaction.bind(this.db);
+ this.with = this.db.with.bind(this.db);
+ this.$with = this.db.$with.bind(this.db);
+ this.all = this.db.all.bind(this.db);
+ this.get = this.db.get.bind(this.db);
+ this.values = this.db.values.bind(this.db);
+ }
+
+ public static create(dbInstance: DrizzleDb): DbManager {
+ if (_dbManager) return _dbManager;
+ _dbManager = new DbManager(dbInstance);
+ return _dbManager;
+ }
+
+ public getSync(
+ query: T,
+ ): Awaited> {
+ const { sql: sqlString, params } = query.toSQL();
+ return db.executeSync(sqlString, params as any[]).rows[0] as Awaited<
+ ReturnType
+ >;
+ }
+
+ public async allSync(
+ query: T,
+ ): Promise>> {
+ const { sql: sqlString, params } = query.toSQL();
+ return db.executeSync(sqlString, params as any[]).rows as Awaited<
+ ReturnType
+ >;
+ }
+
+ /**
+ * Efficiently executes a Drizzle query for multiple data rows using a single
+ * prepared statement within a write transaction.
+ *
+ * @param data - Array of objects containing the parameters for each execution.
+ * @param fn - Callback to build the query. Use `ph("key")` to bind to properties in your data.
+ * Must return a prepared query via `.prepare()`.
+ *
+ * @example
+ * await dbManager.batch(
+ * [{ id: 1, val: 'a' }, { id: 2, val: 'b' }],
+ * (tx, ph) => tx.insert(table).values({ id: ph('id'), val: ph('val') }).prepare()
+ * );
+ */
+ public async batch>(
+ data: T[],
+ fn: (
+ tx: TransactionParameter,
+ ph: (arg: Extract) => Placeholder,
+ ) => SQLitePreparedQuery,
+ ) {
+ const ph = (arg: Extract) => sql.placeholder(arg);
+ await this.write(async tx => {
+ const prep = fn(tx, ph);
+ for (let index = 0; index < data.length; index++) {
+ prep.run(data[index]);
+ }
+ });
+ }
+
+ public async write(
+ fn: (tx: TransactionParameter) => Promise,
+ ): Promise {
+ return await this.queue.enqueue({
+ id: 'write',
+ run: async () =>
+ await this.db.transaction(async tx => {
+ const result = await fn(tx);
+ db?.flushPendingReactiveQueries();
+ return result;
+ }),
+ });
+ }
+}
+
+export const createDbManager = (dbInstance: DrizzleDb) => {
+ return DbManager.create(dbInstance);
+};
+
+type TableNames = GetSelectTableName;
+type FireOn = Array<{ table: TableNames; ids?: number[] }>;
+
+export function useLiveQuery(
+ query: T,
+ fireOn: FireOn,
+) {
+ type ReturnValue = Awaited>;
+
+ const { sql: sqlString, params } = query.toSQL();
+ const paramsKey = JSON.stringify(params);
+ const fireOnKey = JSON.stringify(fireOn);
+
+ const [data, setData] = useState(
+ () => db.executeSync(sqlString, params as any[]).rows as ReturnValue,
+ );
+
+ useEffect(() => {
+ const unsub = db.reactiveExecute({
+ query: sqlString,
+ arguments: params as any[],
+ fireOn,
+ callback: (result: { rows: ReturnValue }) => {
+ setData(result.rows);
+ },
+ });
+ return unsub;
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [sqlString, paramsKey, fireOnKey]);
+
+ return data;
+}
diff --git a/src/database/manager/queue.ts b/src/database/manager/queue.ts
new file mode 100644
index 0000000000..1f07c505f7
--- /dev/null
+++ b/src/database/manager/queue.ts
@@ -0,0 +1,95 @@
+import { sleep } from '@utils/sleep';
+import { QueueOptions } from './types';
+
+type TaskRunner = () => Promise;
+
+interface DbTask {
+ id: string;
+ attempt: number;
+ run: TaskRunner;
+ resolve: (value: TResult) => void;
+ reject: (reason?: unknown) => void;
+}
+
+const DEFAULT_RETRY_ON = ['SQLITE_BUSY', 'database is locked'];
+
+export class DbTaskQueue {
+ private readonly options: QueueOptions;
+ private readonly queue: DbTask[] = [];
+ private active = false;
+
+ constructor(options?: Partial) {
+ this.options = {
+ concurrency: 1,
+ ...options,
+ retry: {
+ maxRetries: 2,
+ backoffMs: 50,
+ retryOnMessageIncludes: DEFAULT_RETRY_ON,
+ ...options?.retry,
+ },
+ };
+ }
+
+ enqueue(
+ task: Pick, 'id' | 'run'>,
+ ): Promise {
+ if (__DEV__) {
+ if (this.queue.length >= 1) {
+ // eslint-disable-next-line no-console
+ console.warn('[db-queue] One or more tasks are already queued');
+ }
+ }
+ return new Promise((resolve, reject) => {
+ this.queue.push({
+ ...task,
+ attempt: 0,
+ resolve,
+ reject,
+ } as DbTask);
+ this.drain();
+ });
+ }
+
+ private async drain() {
+ if (this.active) return;
+ this.active = true;
+
+ while (this.queue.length > 0) {
+ const task = this.queue.shift();
+ if (!task) continue;
+
+ try {
+ const result = await task.run();
+ task.resolve(result);
+ } catch (error) {
+ const shouldRetry = this.shouldRetry(error, task.attempt);
+ if (shouldRetry) {
+ task.attempt += 1;
+ this.queue.unshift(task);
+ await sleep(this.options.retry?.backoffMs ?? 0);
+ continue;
+ }
+ task.reject(error);
+ }
+ }
+
+ this.active = false;
+ }
+
+ private shouldRetry(error: unknown, attempt: number): boolean {
+ const retryCfg = this.options.retry;
+ if (!retryCfg) return false;
+
+ if (attempt >= (retryCfg.maxRetries ?? 0)) {
+ return false;
+ }
+
+ const message =
+ error instanceof Error ? error.message : String(error ?? '');
+
+ return (retryCfg.retryOnMessageIncludes ?? DEFAULT_RETRY_ON).some(
+ (pattern: string) => message.includes(pattern),
+ );
+ }
+}
diff --git a/src/database/manager/types.ts b/src/database/manager/types.ts
new file mode 100644
index 0000000000..c286dda763
--- /dev/null
+++ b/src/database/manager/types.ts
@@ -0,0 +1,10 @@
+export interface QueueOptions {
+ concurrency?: number;
+ retry?: {
+ maxRetries?: number;
+ backoffMs?: number;
+ retryOnMessageIncludes?: string[];
+ };
+}
+
+
diff --git a/src/database/migrations/002_add_novel_counters.ts b/src/database/migrations/002_add_novel_counters.ts
deleted file mode 100644
index 9fed022ec0..0000000000
--- a/src/database/migrations/002_add_novel_counters.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-import { SQLiteDatabase } from 'expo-sqlite';
-
-import { Migration } from '../types/migration';
-
-const columnExists = (
- db: SQLiteDatabase,
- tableName: string,
- columnName: string,
-): boolean => {
- try {
- const columns = db.getAllSync<{ name: string }>(
- `PRAGMA table_info(${tableName})`,
- );
- return columns.some(col => col.name === columnName);
- } catch {
- return false;
- }
-};
-
-/**
- * Migration 2: Add counter columns to Novel table
- * - Adds chaptersDownloaded, chaptersUnread, totalChapters columns
- * - Adds lastReadAt, lastUpdatedAt timestamp columns
- * - Populates columns with existing data
- */
-export const migration002: Migration = {
- version: 2,
- description: 'Add counter columns and triggers to Novel table',
- migrate: db => {
- const addColumnSafely = (columnName: string, columnDefinition: string) => {
- if (!columnExists(db, 'Novel', columnName)) {
- try {
- db.runSync(`
- ALTER TABLE Novel
- ADD COLUMN ${columnName} ${columnDefinition}
- `);
- } catch (error) {
- // Gracefully handle ALTER TABLE failures (e.g., table doesn't exist)
- // Columns will be created when table is created in initial schema
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.warn(
- `Failed to add column ${columnName} to Novel table:`,
- error,
- );
- }
- }
- }
- };
-
- addColumnSafely('chaptersDownloaded', 'INTEGER DEFAULT 0');
- addColumnSafely('chaptersUnread', 'INTEGER DEFAULT 0');
- addColumnSafely('totalChapters', 'INTEGER DEFAULT 0');
- addColumnSafely('lastReadAt', 'TEXT');
- addColumnSafely('lastUpdatedAt', 'TEXT');
-
- // Verify all columns exist before running UPDATE queries to prevent SQL errors
- const allColumnsExist =
- columnExists(db, 'Novel', 'chaptersDownloaded') &&
- columnExists(db, 'Novel', 'chaptersUnread') &&
- columnExists(db, 'Novel', 'totalChapters') &&
- columnExists(db, 'Novel', 'lastReadAt') &&
- columnExists(db, 'Novel', 'lastUpdatedAt');
-
- if (allColumnsExist) {
- try {
- db.runSync(`
- UPDATE Novel
- SET chaptersDownloaded = (
- SELECT COUNT(*)
- FROM Chapter
- WHERE Chapter.novelId = Novel.id
- AND Chapter.isDownloaded = 1
- )
- `);
-
- db.runSync(`
- UPDATE Novel
- SET chaptersUnread = (
- SELECT COUNT(*)
- FROM Chapter
- WHERE Chapter.novelId = Novel.id
- AND Chapter.unread = 1
- )
- `);
-
- db.runSync(`
- UPDATE Novel
- SET totalChapters = (
- SELECT COUNT(*)
- FROM Chapter
- WHERE Chapter.novelId = Novel.id
- )
- `);
-
- db.runSync(`
- UPDATE Novel
- SET lastReadAt = (
- SELECT MAX(readTime)
- FROM Chapter
- WHERE Chapter.novelId = Novel.id
- )
- `);
-
- db.runSync(`
- UPDATE Novel
- SET lastUpdatedAt = (
- SELECT MAX(updatedTime)
- FROM Chapter
- WHERE Chapter.novelId = Novel.id
- )
- `);
- } catch (error) {
- // Gracefully handle UPDATE failures - columns already added with defaults
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.warn(
- 'Failed to populate counter columns in Novel table:',
- error,
- );
- }
- }
- }
- },
-};
diff --git a/src/database/migrations/README.md b/src/database/migrations/README.md
deleted file mode 100644
index 2f00f97397..0000000000
--- a/src/database/migrations/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Database Migrations
-
-Structured system for managing database schema changes in LNReader.
-
-## Adding a New Migration
-
-### Step 1: Create Migration File
-
-Create `XXX_descriptive_name.ts` where XXX is the version number:
-
-```typescript
-import { Migration } from '../types/migration';
-
-export const migration002: Migration = {
- version: 2,
- description: 'Add bookmarks table',
- migrate: db => {
- db.runSync(`
- CREATE TABLE IF NOT EXISTS Bookmark (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- novelId INTEGER NOT NULL,
- chapterId INTEGER NOT NULL,
- position INTEGER NOT NULL,
- FOREIGN KEY (novelId) REFERENCES Novel(id) ON DELETE CASCADE
- )
- `);
-
- db.runSync(`
- CREATE INDEX IF NOT EXISTS idx_bookmark_novel
- ON Bookmark(novelId)
- `);
- },
-};
-```
-
-### Step 2: Register Migration
-
-Add to `migrations/index.ts`:
-
-```typescript
-import { migration001 } from './001_add_novel_counters';
-import { migration002 } from './002_add_bookmarks'; // Add import
-
-export const migrations: Migration[] = [
- migration001,
- migration002, // Add here
-];
-```
-
-### Step 3: Done
-
-Migration runs automatically on next app launch.
-
-## Additional Resources
-
-- [SQLite ALTER TABLE](https://www.sqlite.org/lang_altertable.html)
-- [SQLite PRAGMA](https://www.sqlite.org/pragma.html)
-- [expo-sqlite](https://docs.expo.dev/versions/latest/sdk/sqlite/)
diff --git a/src/database/migrations/index.ts b/src/database/migrations/index.ts
deleted file mode 100644
index bbd8525793..0000000000
--- a/src/database/migrations/index.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Migration } from '../types/migration';
-import { migration002 } from './002_add_novel_counters';
-
-/**
- * Registry of all database migrations
- *
- * To add a new migration:
- * 1. Create a new file (e.g., 002_add_bookmarks.ts)
- * 2. Define your migration (see existing migrations for examples)
- * 3. Import and add it to the migrations array below
- * 4. Ensure version numbers are sequential
- */
-export const migrations: Migration[] = [migration002];
diff --git a/src/database/queries/CategoryQueries.ts b/src/database/queries/CategoryQueries.ts
index a4f57e74eb..73bfe8da5a 100644
--- a/src/database/queries/CategoryQueries.ts
+++ b/src/database/queries/CategoryQueries.ts
@@ -1,121 +1,244 @@
+import { eq, sql, inArray, and, ne, count } from 'drizzle-orm';
import { BackupCategory, Category, NovelCategory, CCategory } from '../types';
import { showToast } from '@utils/showToast';
import { getString } from '@strings/translations';
-import { db } from '@database/db';
-
-const getCategoriesQuery = `
- SELECT
- Category.id,
- Category.name,
- Category.sort,
- GROUP_CONCAT(NovelCategory.novelId ORDER BY NovelCategory.novelId) AS novelIds
- FROM Category
- LEFT JOIN NovelCategory ON NovelCategory.categoryId = Category.id
- GROUP BY Category.id, Category.name, Category.sort
- ORDER BY Category.sort;
- `;
-
-type NumberList = `${number}` | `${number},${number}` | undefined;
-export const getCategoriesFromDb = () => {
- return db.getAllSync(getCategoriesQuery);
-};
-
-export const getCategoriesWithCount = (novelIds: number[]) => {
- const getCategoriesWithCountQuery = `
- SELECT *, novelsCount
- FROM Category LEFT JOIN
- (
- SELECT categoryId, COUNT(novelId) as novelsCount
- FROM NovelCategory WHERE novelId in (${novelIds.join(
- ',',
- )}) GROUP BY categoryId
- ) as NC ON Category.id = NC.categoryId
- WHERE Category.id != 2
- ORDER BY sort
- `;
- return db.getAllSync(getCategoriesWithCountQuery);
+import { dbManager } from '@database/db';
+import {
+ categorySchema,
+ novelCategorySchema,
+ type CategoryRow,
+} from '@database/schema';
+
+/**
+ * Get all categories with their novel IDs using Drizzle ORM
+ */
+export const getCategoriesFromDb = async (): Promise<
+ Array
+> => {
+ return await dbManager
+ .select({
+ id: categorySchema.id,
+ name: categorySchema.name,
+ sort: categorySchema.sort,
+ novelIds: sql<
+ string | null
+ >`GROUP_CONCAT(${novelCategorySchema.novelId} ORDER BY ${novelCategorySchema.novelId})`,
+ })
+ .from(categorySchema)
+ .leftJoin(
+ novelCategorySchema,
+ eq(novelCategorySchema.categoryId, categorySchema.id),
+ )
+ .groupBy(categorySchema.id, categorySchema.name, categorySchema.sort)
+ .orderBy(categorySchema.sort)
+ .all();
};
-const createCategoryQuery = 'INSERT INTO Category (name) VALUES (?)';
+/**
+ * Get categories with novel count for the specified novels
+ */
+export const getCategoriesWithCount = async (
+ novelIds: number[],
+): Promise => {
+ if (!novelIds.length) {
+ return await dbManager
+ .select({
+ id: categorySchema.id,
+ name: categorySchema.name,
+ sort: categorySchema.sort,
+ novelsCount: sql`0`,
+ })
+ .from(categorySchema)
+ .where(ne(categorySchema.id, 2))
+ .orderBy(categorySchema.sort)
+ .all();
+ }
-export const createCategory = (categoryName: string): void => {
- db.runSync(createCategoryQuery, categoryName);
+ // Use subquery to count novels per category
+ const result = await dbManager.transaction(async tx => {
+ const subquery = tx
+ .select({
+ categoryId: novelCategorySchema.categoryId,
+ novelsCount: count(novelCategorySchema.novelId).as('novelsCount'),
+ })
+ .from(novelCategorySchema)
+ .where(inArray(novelCategorySchema.novelId, novelIds))
+ .groupBy(novelCategorySchema.categoryId)
+ .as('NC');
+
+ const r = await tx
+ .select({
+ id: categorySchema.id,
+ name: categorySchema.name,
+ sort: categorySchema.sort,
+ novelsCount: sql`COALESCE(${subquery.novelsCount}, 0)`,
+ })
+ .from(categorySchema)
+ .leftJoin(subquery, eq(categorySchema.id, subquery.categoryId))
+ .where(ne(categorySchema.id, 2))
+ .orderBy(categorySchema.sort);
+
+ return r;
+ });
+
+ return result;
};
-const beforeDeleteCategoryQuery = `
- UPDATE NovelCategory SET categoryId = (SELECT id FROM Category WHERE sort = 1)
- WHERE novelId IN (
- SELECT novelId FROM NovelCategory
- GROUP BY novelId
- HAVING COUNT(categoryId) = 1
- )
- AND categoryId = ?;
-`;
-const deleteCategoryQuery = 'DELETE FROM Category WHERE id = ?';
+/**
+ * Create a new category using Drizzle ORM
+ */
+export const createCategory = async (
+ categoryName: string,
+): Promise => {
+ return await dbManager.write(async tx => {
+ const categoryCount = await tx.$count(categorySchema);
+ const row = await tx
+ .insert(categorySchema)
+ .values({ name: categoryName, sort: categoryCount + 1 })
+ .returning()
+ .get();
+ return row;
+ });
+};
-export const deleteCategoryById = (category: Category): void => {
- if (category.sort === 1 || category.id === 2) {
+/**
+ * Delete a category by ID with proper handling of novels
+ * Before deletion, reassigns novels that only belong to this category to the default category
+ */
+export const deleteCategoryById = async (category: Category): Promise => {
+ if (category.id <= 2) {
return showToast(getString('categories.cantDeleteDefault'));
}
- db.runSync(beforeDeleteCategoryQuery, category.id);
- db.runSync(deleteCategoryQuery, category.id);
-};
-const updateCategoryQuery = 'UPDATE Category SET name = ? WHERE id = ?';
+ await dbManager.write(async tx => {
+ const defaultCategoryId = 1;
+
+ // Find novels that only belong to this category
+ const novelsWithOnlyThisCategory = await tx
+ .select({ novelId: novelCategorySchema.novelId })
+ .from(novelCategorySchema)
+ .groupBy(novelCategorySchema.novelId)
+ .having(sql`COUNT(${novelCategorySchema.categoryId}) = 1`)
+ .all();
+
+ const novelIds = novelsWithOnlyThisCategory.map(row => row.novelId);
+
+ // Update those novels to belong to the default category
+ if (novelIds.length > 0) {
+ await tx
+ .update(novelCategorySchema)
+ .set({ categoryId: defaultCategoryId })
+ .where(
+ and(
+ inArray(novelCategorySchema.novelId, novelIds),
+ eq(novelCategorySchema.categoryId, category.id),
+ ),
+ )
+ .run();
+ }
+
+ // Delete the category
+ await tx
+ .delete(categorySchema)
+ .where(eq(categorySchema.id, category.id))
+ .run();
+ });
+};
-export const updateCategory = (
+/**
+ * Update a category name using Drizzle ORM
+ */
+export const updateCategory = async (
categoryId: number,
categoryName: string,
-): void => {
- db.runSync(updateCategoryQuery, categoryName, categoryId);
+): Promise => {
+ await dbManager.write(async tx => {
+ await tx
+ .update(categorySchema)
+ .set({ name: categoryName })
+ .where(eq(categorySchema.id, categoryId));
+ });
};
-const isCategoryNameDuplicateQuery = `
- SELECT COUNT(*) as isDuplicate FROM Category WHERE name = ?
- `;
-
+/**
+ * Check if a category name already exists using Drizzle ORM
+ */
export const isCategoryNameDuplicate = (categoryName: string): boolean => {
- const res = db.getFirstSync(isCategoryNameDuplicateQuery, [categoryName]);
+ const result = dbManager.getSync(
+ dbManager
+ .select({ id: categorySchema.id })
+ .from(categorySchema)
+ .where(eq(categorySchema.name, categoryName)),
+ );
- if (res instanceof Object && 'isDuplicate' in res) {
- return Boolean(res.isDuplicate);
- } else {
- throw 'isCategoryNameDuplicate return type does not match.';
- }
+ return !!result;
};
-const updateCategoryOrderQuery = 'UPDATE Category SET sort = ? WHERE id = ?';
-
-export const updateCategoryOrderInDb = (categories: Category[]): void => {
- // Do not set local as default one
- if (categories.length && categories[0].id === 2) {
+/**
+ * Update the sort order of categories
+ */
+export const updateCategoryOrderInDb = async (
+ categories: Category[],
+): Promise => {
+ if (!categories.length) {
return;
}
- for (const c of categories) {
- db.runSync(updateCategoryOrderQuery, c.sort, c.id);
- }
+
+ await dbManager.write(async tx => {
+ for (const category of categories) {
+ tx.update(categorySchema)
+ .set({ sort: category.sort })
+ .where(eq(categorySchema.id, category.id))
+ .run();
+ }
+ });
};
-export const getAllNovelCategories = () =>
- db.getAllSync('SELECT * FROM NovelCategory');
+/**
+ * Get all novel-category associations
+ */
+export const getAllNovelCategories = async (): Promise => {
+ return await dbManager.select().from(novelCategorySchema).all();
+};
-export const _restoreCategory = (category: BackupCategory) => {
- db.runSync(
- 'DELETE FROM Category WHERE id = ? OR sort = ?',
- category.id,
- category.sort,
- );
- db.runSync(
- 'INSERT OR IGNORE INTO Category (id, name, sort) VALUES (?, ?, ?)',
- category.id,
- category.name,
- category.sort,
- );
- for (const novelId of category.novelIds) {
- db.runSync(
- 'INSERT OR IGNORE INTO NovelCategory (categoryId, novelId) VALUES (?, ?)',
- category.id,
- novelId,
- );
- }
+/**
+ * Restore a category from backup
+ * Used during the restore process
+ */
+export const _restoreCategory = async (
+ category: BackupCategory,
+): Promise => {
+ await dbManager.write(async tx => {
+ // Delete existing category with same id or sort
+ await tx
+ .delete(categorySchema)
+ .where(
+ sql`${categorySchema.id} = ${category.id} OR ${categorySchema.sort} = ${category.sort}`,
+ )
+ .run();
+
+ // Insert the category
+ await tx
+ .insert(categorySchema)
+ .values({
+ id: category.id,
+ name: category.name,
+ sort: category.sort,
+ })
+ .onConflictDoNothing()
+ .run();
+
+ // Insert novel-category associations
+ if (category.novelIds && category.novelIds.length > 0) {
+ for (const novelId of category.novelIds) {
+ tx.insert(novelCategorySchema)
+ .values({
+ categoryId: category.id,
+ novelId: novelId,
+ })
+ .onConflictDoNothing()
+ .run();
+ }
+ }
+ });
};
diff --git a/src/database/queries/ChapterQueries.ts b/src/database/queries/ChapterQueries.ts
index 2eb75333bf..1bc0483514 100644
--- a/src/database/queries/ChapterQueries.ts
+++ b/src/database/queries/ChapterQueries.ts
@@ -1,100 +1,142 @@
-import { showToast } from '@utils/showToast';
import {
- ChapterInfo,
- DownloadedChapter,
- UpdateOverview,
- Update,
-} from '../types';
+ eq,
+ getColumns,
+ sql,
+ inArray,
+ and,
+ lte,
+ isNotNull,
+ desc,
+ asc,
+ count,
+ like,
+ or,
+ gt,
+ lt,
+} from 'drizzle-orm';
+import { showToast } from '@utils/showToast';
+import { ChapterInfo, DownloadedChapter, Update } from '../types';
import { ChapterItem } from '@plugins/types';
import { getString } from '@strings/translations';
import { NOVEL_STORAGE } from '@utils/Storages';
-import { db } from '@database/db';
+import { dbManager } from '@database/db';
+import { chapterSchema, novelSchema } from '@database/schema';
import NativeFile from '@specs/NativeFile';
+import { ChapterFilterKey, ChapterOrderKey } from '@database/constants';
+import { chapterFilterToSQL, chapterOrderToSQL } from '@database/utils/parser';
+import { castInt } from '@database/manager/manager';
// #region Mutations
+/**
+ * Insert or update chapters using Drizzle ORM
+ */
export const insertChapters = async (
novelId: number,
chapters?: ChapterItem[],
-) => {
+): Promise => {
if (!chapters?.length) {
return;
}
-
- await db.withTransactionAsync(async () => {
- for (let index = 0; index < chapters.length; index++) {
- const chapter = chapters[index];
- const chapterName = chapter.name ?? 'Chapter ' + (index + 1);
- const chapterPage = chapter.page || '1';
-
- const result = await db.runAsync(
- `
- INSERT INTO Chapter (path, name, releaseTime, novelId, chapterNumber, page, position)
- SELECT ?, ?, ?, ?, ?, ?, ?
- WHERE NOT EXISTS (SELECT id FROM Chapter WHERE path = ? AND novelId = ?);
- `,
- chapter.path,
- chapterName,
- chapter.releaseTime || '',
- novelId,
- chapter.chapterNumber || null,
- chapterPage,
- index,
- chapter.path,
- novelId,
- );
-
- const insertId = result.lastInsertRowId;
-
- if (!insertId || insertId < 0) {
- await db.runAsync(
- `
- UPDATE Chapter SET
- page = ?, position = ?, name = ?, releaseTime = ?, chapterNumber = ?
- WHERE path = ? AND novelId = ? AND (page != ? OR position != ? OR name != ? OR releaseTime != ? OR chapterNumber != ?);
- `,
- chapterPage,
- index,
- chapterName,
- chapter.releaseTime || '',
- chapter.chapterNumber || null,
- chapter.path,
+ await dbManager.batch(
+ chapters.map((c, i) => ({
+ path: c.path,
+ name: c.name || 'Chapter ' + (i + 1),
+ releaseTime: c.releaseTime || '',
+ chapterNumber: c.chapterNumber ?? null,
+ page: c.page || '1',
+ position: i,
+ })),
+ (tx, ph) =>
+ tx
+ .insert(chapterSchema)
+ .values({
+ path: ph('path'),
+ name: ph('name'),
+ releaseTime: ph('releaseTime'),
novelId,
- chapterPage,
- index,
- chapterName,
- chapter.releaseTime || '',
- chapter.chapterNumber || null,
- );
- }
- }
- });
+ chapterNumber: ph('chapterNumber'),
+ page: ph('page'),
+ position: ph('position'),
+ })
+ .onConflictDoUpdate({
+ target: [chapterSchema.novelId, chapterSchema.path],
+ set: {
+ page: ph('page'),
+ position: ph('position'),
+ name: ph('name'),
+ releaseTime: ph('releaseTime'),
+ chapterNumber: ph('chapterNumber'),
+ },
+ })
+ .prepare(),
+ );
};
-export const markChapterRead = (chapterId: number) =>
- db.runAsync('UPDATE Chapter SET `unread` = 0 WHERE id = ?', chapterId);
+export const markChapterRead = async (chapterId: number): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ unread: false })
+ .where(eq(chapterSchema.id, chapterId))
+ .run();
+ });
+};
-export const markChaptersRead = (chapterIds: number[]) =>
- db.execAsync(
- `UPDATE Chapter SET \`unread\` = 0 WHERE id IN (${chapterIds.join(',')})`,
- );
+export const markChaptersRead = async (chapterIds: number[]): Promise => {
+ if (!chapterIds.length) {
+ return;
+ }
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ unread: false })
+ .where(inArray(chapterSchema.id, chapterIds))
+ .run();
+ });
+};
-export const markChapterUnread = (chapterId: number) =>
- db.runAsync('UPDATE Chapter SET `unread` = 1 WHERE id = ?', chapterId);
+export const markChapterUnread = async (chapterId: number): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ unread: true })
+ .where(eq(chapterSchema.id, chapterId))
+ .run();
+ });
+};
-export const markChaptersUnread = (chapterIds: number[]) =>
- db.execAsync(
- `UPDATE Chapter SET \`unread\` = 1 WHERE id IN (${chapterIds.join(',')})`,
- );
+export const markChaptersUnread = async (
+ chapterIds: number[],
+): Promise => {
+ if (!chapterIds.length) {
+ return;
+ }
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ unread: true })
+ .where(inArray(chapterSchema.id, chapterIds))
+ .run();
+ });
+};
-export const markAllChaptersRead = (novelId: number) =>
- db.runAsync('UPDATE Chapter SET `unread` = 0 WHERE novelId = ?', novelId);
+export const markAllChaptersRead = async (novelId: number): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ unread: false })
+ .where(eq(chapterSchema.novelId, novelId))
+ .run();
+ });
+};
-export const markAllChaptersUnread = (novelId: number) =>
- db.runAsync('UPDATE Chapter SET `unread` = 1 WHERE novelId = ?', novelId);
+export const markAllChaptersUnread = async (novelId: number): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ unread: true })
+ .where(eq(chapterSchema.novelId, novelId))
+ .run();
+ });
+};
-const deleteDownloadedFiles = async (
+const deleteDownloadedFiles = (
pluginId: string,
novelId: number,
chapterId: number,
@@ -112,349 +154,503 @@ export const deleteChapter = async (
pluginId: string,
novelId: number,
chapterId: number,
-) => {
- await deleteDownloadedFiles(pluginId, novelId, chapterId);
- await db.runAsync(
- 'UPDATE Chapter SET isDownloaded = 0 WHERE id = ?',
- chapterId,
- );
+): Promise => {
+ deleteDownloadedFiles(pluginId, novelId, chapterId);
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ isDownloaded: false })
+ .where(eq(chapterSchema.id, chapterId))
+ .run();
+ });
};
export const deleteChapters = async (
pluginId: string,
novelId: number,
chapters?: ChapterInfo[],
-) => {
+): Promise => {
if (!chapters?.length) {
return;
}
- const chapterIdsString = chapters?.map(chapter => chapter.id).toString();
+ const chapterIds = chapters.map(chapter => chapter.id);
- await Promise.all(
- chapters?.map(chapter =>
- deleteDownloadedFiles(pluginId, novelId, chapter.id),
- ),
- );
- await db.execAsync(
- `UPDATE Chapter SET isDownloaded = 0 WHERE id IN (${chapterIdsString})`,
+ chapters.forEach(chapter =>
+ deleteDownloadedFiles(pluginId, novelId, chapter.id),
);
+
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ isDownloaded: false })
+ .where(inArray(chapterSchema.id, chapterIds))
+ .run();
+ });
};
-export const deleteDownloads = async (chapters: DownloadedChapter[]) => {
- await Promise.all(
- chapters?.map(chapter => {
- deleteDownloadedFiles(chapter.pluginId, chapter.novelId, chapter.id);
- }),
- );
- await db.execAsync('UPDATE Chapter SET isDownloaded = 0');
+// TODO: Remove the need for the chapters array, as it could lead to not deleting the downloaded files but just marking them as not downloaded
+/*
+ Deletes all downloaded chapters from the database
+*/
+export const deleteDownloads = async (
+ chapters: DownloadedChapter[],
+): Promise => {
+ if (!chapters?.length) {
+ return;
+ }
+ chapters.forEach(chapter => {
+ deleteDownloadedFiles(chapter.pluginId, chapter.novelId, chapter.id);
+ });
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema).set({ isDownloaded: false }).run();
+ });
};
-export const deleteReadChaptersFromDb = async () => {
+export const deleteReadChaptersFromDb = async (): Promise => {
const chapters = await getReadDownloadedChapters();
- await Promise.all(
- chapters?.map(chapter => {
- deleteDownloadedFiles(chapter.pluginId, chapter.novelId, chapter.novelId);
- }),
- );
- const chapterIdsString = chapters?.map(chapter => chapter.id).toString();
- db.execAsync(
- `UPDATE Chapter SET isDownloaded = 0 WHERE id IN (${chapterIdsString})`,
- );
+ chapters?.forEach(chapter => {
+ deleteDownloadedFiles(chapter.pluginId, chapter.novelId, chapter.id);
+ });
+ const chapterIds = chapters?.map(chapter => chapter.id);
+ if (chapterIds?.length) {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ isDownloaded: false })
+ .where(inArray(chapterSchema.id, chapterIds))
+ .run();
+ });
+ }
showToast(getString('novelScreen.readChaptersDeleted'));
};
-export const updateChapterProgress = (chapterId: number, progress: number) =>
- db.runAsync(
- 'UPDATE Chapter SET progress = ? WHERE id = ?',
- progress,
- chapterId,
- );
+export const updateChapterProgress = async (
+ chapterId: number,
+ progress: number,
+): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ progress })
+ .where(eq(chapterSchema.id, chapterId))
+ .run();
+ });
+};
-export const updateChapterProgressByIds = (
+export const updateChapterProgressByIds = async (
chapterIds: number[],
progress: number,
-) =>
- db.runAsync(
- `UPDATE Chapter SET progress = ? WHERE id in (${chapterIds.join(',')})`,
- progress,
- );
+): Promise => {
+ if (!chapterIds.length) {
+ return;
+ }
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ progress })
+ .where(inArray(chapterSchema.id, chapterIds))
+ .run();
+ });
+};
-export const bookmarkChapter = (chapterId: number) =>
- db.runAsync(
- 'UPDATE Chapter SET bookmark = (CASE WHEN bookmark = 0 THEN 1 ELSE 0 END) WHERE id = ?',
- chapterId,
- );
+export const bookmarkChapter = async (chapterId: number): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ bookmark: sql`NOT ${chapterSchema.bookmark}` })
+ .where(eq(chapterSchema.id, chapterId))
+ .run();
+ });
+};
-export const markPreviuschaptersRead = (chapterId: number, novelId: number) =>
- db.runAsync(
- 'UPDATE Chapter SET `unread` = 0 WHERE id <= ? AND novelId = ?',
- chapterId,
- novelId,
- );
+export const markPreviuschaptersRead = async (
+ chapterId: number,
+ novelId: number,
+): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ unread: false })
+ .where(
+ and(
+ lte(chapterSchema.id, chapterId),
+ eq(chapterSchema.novelId, novelId),
+ ),
+ )
+ .run();
+ });
+};
-export const markPreviousChaptersUnread = (
+export const markPreviousChaptersUnread = async (
chapterId: number,
novelId: number,
-) =>
- db.runAsync(
- 'UPDATE Chapter SET `unread` = 1 WHERE id <= ? AND novelId = ?',
- chapterId,
- novelId,
- );
+): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ unread: true })
+ .where(
+ and(
+ lte(chapterSchema.id, chapterId),
+ eq(chapterSchema.novelId, novelId),
+ ),
+ )
+ .run();
+ });
+};
-export const clearUpdates = () =>
- db.execAsync('UPDATE Chapter SET updatedTime = NULL');
+export const clearUpdates = async (): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema).set({ updatedTime: null }).run();
+ });
+};
// #endregion
// #region Selectors
-export const getCustomPages = (novelId: number) =>
- db.getAllAsync<{ page: string }>(
- 'SELECT DISTINCT page from Chapter WHERE novelId = ? ORDER BY CAST(page AS INTEGER) ASC',
- novelId,
- );
+export const getCustomPages = async (novelId: number) => {
+ return await dbManager
+ .selectDistinct({ page: chapterSchema.page })
+ .from(chapterSchema)
+ .where(eq(chapterSchema.novelId, novelId))
+ .orderBy(asc(castInt(chapterSchema.page)))
+ .all();
+};
-export const getNovelChapters = (novelId: number) =>
- db.getAllAsync(
- 'SELECT * FROM Chapter WHERE novelId = ?',
- novelId,
- );
+export const getNovelChapters = async (
+ novelId: number,
+): Promise =>
+ dbManager
+ .select()
+ .from(chapterSchema)
+ .where(eq(chapterSchema.novelId, novelId));
-export const getUnreadNovelChapters = (novelId: number) =>
- db.getAllAsync(
- 'SELECT * FROM Chapter WHERE novelId = ? AND unread = 1',
- novelId,
- );
+export const getUnreadNovelChapters = async (
+ novelId: number,
+): Promise =>
+ dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(eq(chapterSchema.novelId, novelId), eq(chapterSchema.unread, true)),
+ );
-export const getAllUndownloadedChapters = (novelId: number) =>
- db.getAllAsync(
- 'SELECT * FROM Chapter WHERE novelId = ? AND isDownloaded = 0',
- novelId,
- );
+export const getAllUndownloadedChapters = async (
+ novelId: number,
+): Promise =>
+ dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ eq(chapterSchema.isDownloaded, false),
+ ),
+ );
-export const getAllUndownloadedAndUnreadChapters = (novelId: number) =>
- db.getAllAsync(
- 'SELECT * FROM Chapter WHERE novelId = ? AND isDownloaded = 0 AND unread = 1',
- novelId,
- );
+export const getAllUndownloadedAndUnreadChapters = async (
+ novelId: number,
+): Promise =>
+ dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ eq(chapterSchema.isDownloaded, false),
+ eq(chapterSchema.unread, true),
+ ),
+ )
+ .all();
-export const getChapter = (chapterId: number) =>
- db.getFirstAsync(
- 'SELECT * FROM Chapter WHERE id = ?',
- chapterId,
- );
+export const getChapter = async (chapterId: number) =>
+ dbManager
+ .select()
+ .from(chapterSchema)
+ .where(eq(chapterSchema.id, chapterId))
+ .get();
-const getPageChaptersQuery = (
- sort = 'ORDER BY position ASC',
- filter = '',
- limit?: number,
- offset?: number,
-) =>
- `
- SELECT * FROM Chapter
- WHERE novelId = ? AND page = ?
- ${filter} ${sort}
- ${limit ? `LIMIT ${limit}` : ''}
- ${offset ? `OFFSET ${offset}` : ''}`;
-
-export const getPageChapters = (
+export const getPageChapters = async (
novelId: number,
- sort?: string,
- filter?: string,
+ sort?: ChapterOrderKey,
+ filter?: ChapterFilterKey[],
page?: string,
offset?: number,
limit?: number,
-) => {
- return db.getAllAsync(
- getPageChaptersQuery(sort, filter, limit, offset),
- novelId,
- page || '1',
- );
+): Promise => {
+ const query = dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ eq(chapterSchema.page, page || '1'),
+ chapterFilterToSQL(filter),
+ ),
+ )
+ .$dynamic();
+
+ if (sort) {
+ query.orderBy(chapterOrderToSQL(sort));
+ }
+ if (limit !== undefined) {
+ query.limit(limit);
+ }
+ if (offset !== undefined) {
+ query.offset(offset);
+ }
+
+ return query.all();
};
export const getChapterCount = async (novelId: number, page: string = '1') =>
- (
- await db.getFirstAsync<{ 'COUNT(*)': number }>(
- 'SELECT COUNT(*) FROM Chapter WHERE novelId = ? AND page = ?',
- novelId,
- page,
- )
- )?.['COUNT(*)'] ?? 0;
+ await dbManager.$count(
+ chapterSchema,
+ and(eq(chapterSchema.novelId, novelId), eq(chapterSchema.page, page)),
+ );
-export const getPageChaptersBatched = (
+export const getPageChaptersBatched = async (
novelId: number,
- sort?: string,
- filter?: string,
+ sort?: ChapterOrderKey,
+ filter?: ChapterFilterKey[],
page?: string,
batch: number = 0,
) => {
- return db.getAllAsync(
- getPageChaptersQuery(sort, filter, 300, 300 * batch),
- novelId,
- page || '1',
- );
+ const limit = 300;
+ const offset = 300 * batch;
+ const query = dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ eq(chapterSchema.page, page || '1'),
+ chapterFilterToSQL(filter),
+ ),
+ )
+ .limit(limit)
+ .offset(offset)
+ .$dynamic();
+
+ if (sort) {
+ query.orderBy(chapterOrderToSQL(sort));
+ }
+ return query.all();
};
-export const getNovelChaptersByNumber = (
+export const getNovelChaptersByNumber = async (
novelId: number,
chapterNumber: number,
) => {
- return db.getAllAsync(
- 'SELECT * FROM Chapter WHERE novelId = ? AND position = ?',
- novelId,
- chapterNumber - 1,
- );
+ return dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ eq(chapterSchema.position, chapterNumber - 1),
+ ),
+ )
+ .all();
};
export const getFirstUnreadChapter = (
novelId: number,
- filter?: string,
+ filter?: ChapterFilterKey[],
page?: string,
) =>
- db.getFirstAsync(
- `SELECT * FROM Chapter WHERE novelId = ? AND page = ? AND unread = 1 ${filter || ''} ORDER BY position ASC LIMIT 1`,
- novelId,
- page || '1',
- );
+ dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ eq(chapterSchema.page, page || '1'),
+ eq(chapterSchema.unread, true),
+ chapterFilterToSQL(filter),
+ ),
+ )
+ .orderBy(asc(chapterSchema.position))
+ .limit(1)
+ .get();
-export const getNovelChaptersByName = (novelId: number, searchText: string) => {
- return db.getAllAsync(
- 'SELECT * FROM Chapter WHERE novelId = ? AND name LIKE ?',
- novelId,
- `%${searchText}%`,
- );
+export const getNovelChaptersByName = async (
+ novelId: number,
+ searchText: string,
+) => {
+ return dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ like(chapterSchema.name, `%${searchText}%`),
+ ),
+ )
+ .all();
};
-export const getPrevChapter = (
+export const getPrevChapter = async (
novelId: number,
chapterPosition: number,
page: string,
) =>
- db.getFirstAsync(
- `SELECT * FROM Chapter
- WHERE novelId = ?
- AND (
- (position < ? AND page = ?)
- OR CAST(page AS INTEGER) < CAST(? AS INTEGER)
- )
- ORDER BY CAST(page AS INTEGER) DESC, position DESC`,
- novelId,
- chapterPosition,
- page,
- page,
- );
+ dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ or(
+ and(
+ eq(chapterSchema.page, castInt(page)),
+ lt(chapterSchema.position, castInt(chapterPosition)),
+ ),
+ lt(chapterSchema.page, castInt(page)),
+ ),
+ ),
+ )
+ .orderBy(
+ desc(castInt(chapterSchema.page)),
+ desc(castInt(chapterSchema.position)),
+ )
+ .get();
-export const getNextChapter = (
+export const getNextChapter = async (
novelId: number,
chapterPosition: number,
page: string,
) =>
- db.getFirstAsync(
- `SELECT * FROM Chapter
- WHERE novelId = ?
- AND (
- (page = ? AND position > ?)
- OR CAST(page AS INTEGER) > CAST(? AS INTEGER)
- )
- ORDER BY CAST(page AS INTEGER) ASC, position ASC
- LIMIT 1`,
- novelId,
- page,
- chapterPosition,
- page,
- );
-
-const getReadDownloadedChapters = () =>
- db.getAllAsync(`
- SELECT Chapter.id, Chapter.novelId, pluginId
- FROM Chapter
- JOIN Novel
- ON Novel.id = Chapter.novelId AND unread = 0 AND isDownloaded = 1`);
-
-export const getDownloadedChapters = () =>
- db.getAllAsync(`
- SELECT
- Chapter.*,
- Novel.pluginId, Novel.name as novelName, Novel.cover as novelCover, Novel.path as novelPath
- FROM Chapter
- JOIN Novel
- ON Chapter.novelId = Novel.id
- WHERE Chapter.isDownloaded = 1
- `);
-
-export const getNovelDownloadedChapters = (
+ dbManager
+ .select()
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.novelId, novelId),
+ or(
+ and(
+ eq(chapterSchema.page, castInt(page)),
+ gt(chapterSchema.position, castInt(chapterPosition)),
+ ),
+ and(
+ gt(chapterSchema.page, castInt(page)),
+ eq(chapterSchema.position, 0),
+ ),
+ ),
+ ),
+ )
+ .orderBy(
+ asc(castInt(chapterSchema.page)),
+ asc(castInt(chapterSchema.position)),
+ )
+ .get();
+
+const getReadDownloadedChapters = async () =>
+ dbManager
+ .select({
+ id: chapterSchema.id,
+ novelId: chapterSchema.novelId,
+ pluginId: novelSchema.pluginId,
+ })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(novelSchema.id, chapterSchema.novelId))
+ .where(
+ and(
+ eq(chapterSchema.unread, false),
+ eq(chapterSchema.isDownloaded, true),
+ ),
+ )
+ .all();
+
+export const getDownloadedChapters = async () =>
+ dbManager
+ .select({
+ ...getColumns(chapterSchema),
+ pluginId: novelSchema.pluginId,
+ novelName: novelSchema.name,
+ novelCover: novelSchema.cover,
+ novelPath: novelSchema.path,
+ })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(chapterSchema.novelId, novelSchema.id))
+ .where(eq(chapterSchema.isDownloaded, true))
+ .all();
+
+export const getNovelDownloadedChapters = async (
novelId: number,
startPosition?: number,
endPosition?: number,
-) => {
+): Promise => {
+ const whereConditions = [
+ eq(chapterSchema.novelId, novelId),
+ eq(chapterSchema.isDownloaded, true),
+ ];
+
if (startPosition !== undefined && endPosition !== undefined) {
- return db.getAllAsync(
- 'SELECT * FROM Chapter WHERE novelId = ? AND isDownloaded = 1 AND position >= ? AND position <= ? ORDER BY position ASC',
- novelId,
- startPosition - 1,
- endPosition - 1,
+ whereConditions.push(
+ sql`${chapterSchema.position} >= ${startPosition - 1}`,
);
+ whereConditions.push(sql`${chapterSchema.position} <= ${endPosition - 1}`);
}
- return db.getAllAsync(
- 'SELECT * FROM Chapter WHERE novelId = ? AND isDownloaded = 1 ORDER BY position ASC',
- novelId,
- );
+ return dbManager
+ .select()
+ .from(chapterSchema)
+ .where(and(...whereConditions))
+ .orderBy(asc(chapterSchema.position))
+ .all();
};
-export const getUpdatedOverviewFromDb = () =>
- db.getAllAsync(`SELECT
- Novel.id AS novelId,
- Novel.name AS novelName,
- Novel.cover AS novelCover,
- Novel.path AS novelPath,
- DATE(Chapter.updatedTime) AS updateDate,
- COUNT(*) AS updatesPerDay
-FROM
- Chapter
-JOIN
- Novel
-ON
- Chapter.novelId = Novel.id
-WHERE
- Chapter.updatedTime IS NOT NULL
-GROUP BY
- Novel.id,
- DATE(Chapter.updatedTime)
-ORDER BY
- updateDate DESC,
- novelId;
-`);
+export const getUpdatedOverviewFromDb = async () =>
+ dbManager
+ .select({
+ novelId: novelSchema.id,
+ novelName: novelSchema.name,
+ novelCover: novelSchema.cover,
+ novelPath: novelSchema.path,
+ updateDate: sql`DATE(${chapterSchema.updatedTime})`.as(
+ 'update_date',
+ ),
+ updatesPerDay: count(),
+ })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(chapterSchema.novelId, novelSchema.id))
+ .where(isNotNull(chapterSchema.updatedTime))
+ .groupBy(novelSchema.id, sql`update_date`)
+ .orderBy(desc(sql`update_date`), novelSchema.id)
+ .all();
export const getDetailedUpdatesFromDb = async (
novelId: number,
onlyDownloadableChapters?: boolean,
-) => {
- const result = db.getAllAsync(
- `
-SELECT
- Chapter.*,
- pluginId, Novel.id as novelId, Novel.name as novelName, Novel.path as novelPath, cover as novelCover
-FROM
- Chapter
-JOIN
- Novel
- ON Chapter.novelId = Novel.id
-WHERE novelId = ? ${
- onlyDownloadableChapters
- ? 'AND Chapter.isDownloaded = 1 '
- : 'AND updatedTime IS NOT NULL'
- }
-ORDER BY updatedTime DESC;
-`,
- novelId,
+): Promise => {
+ return dbManager
+ .select({
+ ...getColumns(chapterSchema),
+ pluginId: novelSchema.pluginId,
+ novelId: novelSchema.id,
+ novelName: novelSchema.name,
+ novelPath: novelSchema.path,
+ novelCover: novelSchema.cover,
+ })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(chapterSchema.novelId, novelSchema.id))
+ .where(
+ and(
+ eq(novelSchema.id, novelId),
+ onlyDownloadableChapters
+ ? eq(chapterSchema.isDownloaded, true)
+ : isNotNull(chapterSchema.updatedTime),
+ ),
+ )
+ .orderBy(desc(chapterSchema.updatedTime))
+ .all();
+};
+
+export const isChapterDownloaded = (chapterId: number): boolean => {
+ const result = dbManager.getSync(
+ dbManager
+ .select({ id: chapterSchema.id })
+ .from(chapterSchema)
+ .where(
+ and(
+ eq(chapterSchema.id, chapterId),
+ eq(chapterSchema.isDownloaded, true),
+ ),
+ ),
);
- return await result;
+ return !!result;
};
-
-export const isChapterDownloaded = async (chapterId: number) =>
- !!(await db.getFirstAsync(
- 'SELECT * FROM Chapter WHERE id = ? AND isDownloaded = 1',
- chapterId,
- ));
diff --git a/src/database/queries/HistoryQueries.ts b/src/database/queries/HistoryQueries.ts
index d3ff9f98b1..8511aeac6a 100644
--- a/src/database/queries/HistoryQueries.ts
+++ b/src/database/queries/HistoryQueries.ts
@@ -1,31 +1,66 @@
-import { History } from '@database/types';
-
+import { eq, sql, isNotNull, desc, getColumns } from 'drizzle-orm';
import { showToast } from '@utils/showToast';
import { getString } from '@strings/translations';
-import { db } from '@database/db';
+import { dbManager } from '@database/db';
+import { chapterSchema, novelSchema } from '@database/schema';
-export const getHistoryFromDb = () =>
- db.getAllAsync(`
- SELECT
- Chapter.*, Novel.pluginId, Novel.name as novelName, Novel.path as novelPath, Novel.cover as novelCover, Novel.id as novelId
- FROM Chapter
- JOIN Novel
- ON Chapter.novelId = Novel.id AND Chapter.readTime IS NOT NULL
- GROUP BY novelId
- HAVING readTime = MAX(readTime)
- ORDER BY readTime DESC
- `);
+/**
+ * Get reading history from the database using Drizzle ORM.
+ * Groups by novelId and takes the latest read chapter for each novel.
+ */
+export const getHistoryFromDb = async () => {
+ return dbManager
+ .select({
+ ...getColumns(chapterSchema),
+ pluginId: novelSchema.pluginId,
+ novelName: novelSchema.name,
+ novelPath: novelSchema.path,
+ novelCover: novelSchema.cover,
+ novelId: novelSchema.id,
+ })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(chapterSchema.novelId, novelSchema.id))
+ .where(isNotNull(chapterSchema.readTime))
+ .groupBy(chapterSchema.novelId)
+ .having(sql`${chapterSchema.readTime} = MAX(${chapterSchema.readTime})`)
+ .orderBy(desc(chapterSchema.readTime))
+ .all();
+};
-export const insertHistory = async (chapterId: number) =>
- db.runAsync(
- "UPDATE Chapter SET readTime = datetime('now','localtime') WHERE id = ?",
- chapterId,
- );
+/**
+ * Update the readTime of a chapter to the current time.
+ */
+export const insertHistory = async (chapterId: number): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({
+ readTime: sql`datetime('now','localtime')`,
+ })
+ .where(eq(chapterSchema.id, chapterId))
+ .run();
+ });
+};
-export const deleteChapterHistory = (chapterId: number) =>
- db.runAsync('UPDATE Chapter SET readTime = NULL WHERE id = ?', chapterId);
+/**
+ * Remove a chapter from history by setting its readTime to NULL.
+ */
+export const deleteChapterHistory = async (
+ chapterId: number,
+): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema)
+ .set({ readTime: null })
+ .where(eq(chapterSchema.id, chapterId))
+ .run();
+ });
+};
-export const deleteAllHistory = async () => {
- await db.execAsync('UPDATE Chapter SET readTime = NULL');
+/**
+ * Clear all reading history by setting readTime to NULL for all chapters.
+ */
+export const deleteAllHistory = async (): Promise => {
+ await dbManager.write(async tx => {
+ tx.update(chapterSchema).set({ readTime: null }).run();
+ });
showToast(getString('historyScreen.deleted'));
};
diff --git a/src/database/queries/LibraryQueries.ts b/src/database/queries/LibraryQueries.ts
index bc58d05bcc..79d9a9eec4 100644
--- a/src/database/queries/LibraryQueries.ts
+++ b/src/database/queries/LibraryQueries.ts
@@ -1,6 +1,11 @@
-import { db } from '@database/db';
-import { LibraryNovelInfo, NovelInfo } from '../types';
-
+import { eq, gt, sql, and, like, or, inArray } from 'drizzle-orm';
+import { dbManager } from '@database/db';
+import { novelSchema, novelCategorySchema } from '@database/schema';
+import { castInt } from '@database/manager/manager';
+
+/**
+ * Get library novels with optional filtering and sorting using Drizzle ORM
+ */
export const getLibraryNovelsFromDb = (
sortOrder?: string,
filter?: string,
@@ -8,63 +13,71 @@ export const getLibraryNovelsFromDb = (
downloadedOnlyMode?: boolean,
excludeLocalNovels?: boolean,
) => {
- let query = 'SELECT * FROM Novel WHERE inLibrary = 1';
-
- if (excludeLocalNovels) {
- query += ' AND isLocal = 0';
- }
-
- if (filter) {
- query += ` AND ${filter}`;
- }
-
- if (downloadedOnlyMode) {
- query += ` AND (chaptersDownloaded = 1 OR isLocal = 1)`;
- }
-
- if (searchText) {
- query += ' AND name LIKE ?';
- }
+ const query = dbManager
+ .select()
+ .from(novelSchema)
+ .where(
+ and(
+ eq(novelSchema.inLibrary, true),
+ excludeLocalNovels ? eq(novelSchema.isLocal, false) : undefined,
+ filter ? sql.raw(filter) : undefined,
+ downloadedOnlyMode
+ ? or(
+ gt(novelSchema.chaptersDownloaded, castInt(0)),
+ eq(novelSchema.isLocal, true),
+ )
+ : undefined,
+ searchText ? like(novelSchema.name, `%${searchText}%`) : undefined,
+ ),
+ )
+ .$dynamic();
if (sortOrder) {
- query += ` ORDER BY ${sortOrder}`;
+ query.orderBy(sql.raw(sortOrder));
}
- return db.getAllAsync(query, searchText ? `%${searchText}%` : '');
+ return query.all();
};
-const getNovelOfCategoryQuery =
- 'SELECT DISTINCT novelId FROM NovelCategory WHERE 1 = 1';
-const getNovelsFromIDListQuery = 'SELECT * FROM Novel WHERE inLibrary = 1 ';
-
+/**
+ * Get library novels associated with a specific category using Drizzle ORM
+ */
export const getLibraryWithCategory = async (
categoryId?: number | null,
onlyUpdateOngoingNovels?: boolean,
excludeLocalNovels?: boolean,
-): Promise => {
- let categoryQuery = getNovelOfCategoryQuery;
+) => {
+ // First, get novel IDs associated with the specified category
+ const categoryIdQuery = dbManager
+ .selectDistinct({ novelId: novelCategorySchema.novelId })
+ .from(novelCategorySchema)
+ .$dynamic();
if (categoryId) {
- categoryQuery += ` AND categoryId = ${categoryId}`;
+ categoryIdQuery.where(eq(novelCategorySchema.categoryId, categoryId));
}
- const idRows = await db.getAllAsync<{ novelId: number }>(categoryQuery);
-
- if (!idRows || idRows.length === 0) return [];
-
- const novelIds = idRows.map(r => r.novelId).join(',');
-
- let novelQuery = getNovelsFromIDListQuery;
-
- novelQuery += ` AND id IN (${novelIds})`;
-
- if (excludeLocalNovels) {
- novelQuery += ' AND isLocal = 0';
- }
+ const idRows = await categoryIdQuery.all();
- if (onlyUpdateOngoingNovels) {
- novelQuery += " AND status = 'Ongoing'";
+ if (!idRows || idRows.length === 0) {
+ return [];
}
- return db.getAllAsync(novelQuery);
+ const novelIds = idRows.map(r => r.novelId);
+
+ // Then, fetch the library novels matching those IDs and other criteria
+ const result = dbManager
+ .select()
+ .from(novelSchema)
+ .where(
+ and(
+ eq(novelSchema.inLibrary, true),
+ inArray(novelSchema.id, novelIds),
+ excludeLocalNovels ? eq(novelSchema.isLocal, false) : undefined,
+ onlyUpdateOngoingNovels ? eq(novelSchema.status, 'Ongoing') : undefined,
+ ),
+ )
+ .all();
+
+ return result;
};
diff --git a/src/database/queries/NovelQueries.ts b/src/database/queries/NovelQueries.ts
index b4f2b0f184..52dbad1687 100644
--- a/src/database/queries/NovelQueries.ts
+++ b/src/database/queries/NovelQueries.ts
@@ -1,4 +1,5 @@
import * as DocumentPicker from 'expo-document-picker';
+import { eq, and, sql, inArray, ne } from 'drizzle-orm';
import { fetchNovel } from '@services/plugin/fetch';
import { insertChapters } from './ChapterQueries';
@@ -10,29 +11,44 @@ import { SourceNovel } from '@plugins/types';
import { NOVEL_STORAGE } from '@utils/Storages';
import { downloadFile } from '@plugins/helpers/fetch';
import { getPlugin } from '@plugins/pluginManager';
-import { db } from '@database/db';
+import { dbManager } from '@database/db';
+import {
+ novelSchema,
+ novelCategorySchema,
+ categorySchema,
+ chapterSchema,
+} from '@database/schema';
import NativeFile from '@specs/NativeFile';
+/**
+ * Inserts a novel and its chapters into the database using Drizzle ORM.
+ * Also handles downloading the novel cover if available.
+ */
export const insertNovelAndChapters = async (
pluginId: string,
sourceNovel: SourceNovel,
): Promise => {
- const insertNovelQuery =
- 'INSERT OR IGNORE INTO Novel (path, pluginId, name, cover, summary, author, artist, status, genres, totalPages) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
- const novelId: number | undefined = (
- await db.runAsync(insertNovelQuery, [
- sourceNovel.path,
- pluginId,
- sourceNovel.name,
- sourceNovel.cover || null,
- sourceNovel.summary || null,
- sourceNovel.author || null,
- sourceNovel.artist || null,
- sourceNovel.status || null,
- sourceNovel.genres || null,
- sourceNovel.totalPages || 0,
- ])
- ).lastInsertRowId;
+ const result = await dbManager.write(async tx => {
+ return tx
+ .insert(novelSchema)
+ .values({
+ path: sourceNovel.path,
+ pluginId,
+ name: sourceNovel.name,
+ cover: sourceNovel.cover || null,
+ summary: sourceNovel.summary || null,
+ author: sourceNovel.author || null,
+ artist: sourceNovel.artist || null,
+ status: sourceNovel.status || null,
+ genres: sourceNovel.genres || null,
+ totalPages: sourceNovel.totalPages || 0,
+ })
+ .onConflictDoNothing()
+ .returning()
+ .all();
+ });
+
+ const novelId = result?.[0]?.id;
if (novelId) {
if (sourceNovel.cover) {
@@ -40,165 +56,274 @@ export const insertNovelAndChapters = async (
NativeFile.mkdir(novelDir);
const novelCoverPath = novelDir + '/cover.png';
const novelCoverUri = 'file://' + novelCoverPath;
- await downloadFile(
- sourceNovel.cover,
- novelCoverPath,
- getPlugin(pluginId)?.imageRequestInit,
- );
- await db.runAsync(
- 'UPDATE Novel SET cover = ? WHERE id = ?',
- novelCoverUri,
- novelId,
- );
+
+ try {
+ await downloadFile(
+ sourceNovel.cover,
+ novelCoverPath,
+ getPlugin(pluginId)?.imageRequestInit,
+ );
+ await dbManager.write(async tx => {
+ tx.update(novelSchema)
+ .set({ cover: novelCoverUri })
+ .where(eq(novelSchema.id, novelId))
+ .run();
+ });
+ } catch {
+ // Silently fail cover download
+ }
}
await insertChapters(novelId, sourceNovel.chapters);
}
return novelId;
};
-export const getAllNovels = () => {
- return db.getAllAsync('SELECT * FROM Novel');
+export const getAllNovels = async (): Promise => {
+ return dbManager.select().from(novelSchema).all();
};
-export const getNovelById = (novelId: number) => {
- return db.getFirstAsync(
- 'SELECT * FROM Novel WHERE id = ?',
- novelId,
- );
+export const getNovelById = async (
+ novelId: number,
+): Promise => {
+ const res = dbManager
+ .select()
+ .from(novelSchema)
+ .where(eq(novelSchema.id, novelId))
+ .get();
+ return res;
};
export const getNovelByPath = (
novelPath: string,
pluginId: string,
-) => {
- return db.getFirstAsync(
- 'SELECT * FROM Novel WHERE path = ? AND pluginId = ?',
- novelPath,
- pluginId,
+): NovelInfo | undefined => {
+ const res = dbManager.getSync(
+ dbManager
+ .select()
+ .from(novelSchema)
+ .where(
+ and(
+ eq(novelSchema.path, novelPath),
+ eq(novelSchema.pluginId, pluginId),
+ ),
+ ),
);
+ return res;
};
-// if query is insert novel || add to library => add default category name for it
-// else remove all it's categories
-
+/**
+ * Toggles a novel's presence in the library.
+ * Manages category associations and novel info retrieval if it doesn't exist.
+ */
export const switchNovelToLibraryQuery = async (
novelPath: string,
pluginId: string,
): Promise => {
const novel = await getNovelByPath(novelPath, pluginId);
if (novel) {
- await db.runAsync(
- 'UPDATE Novel SET inLibrary = ? WHERE id = ?',
- Number(!novel.inLibrary),
- novel.id,
- );
- if (novel.inLibrary) {
- await db.runAsync(
- 'DELETE FROM NovelCategory WHERE novelId = ?',
- novel.id,
- );
- showToast(getString('browseScreen.removeFromLibrary'));
- } else {
- await db.runAsync(
- 'INSERT INTO NovelCategory (novelId, categoryId) VALUES (?, (SELECT DISTINCT id FROM Category WHERE sort = 1))',
- novel.id,
- );
- showToast(getString('browseScreen.addedToLibrary'));
- }
- if (novel.pluginId === 'local') {
- await db.runAsync(
- 'INSERT INTO NovelCategory (novelId, categoryId) VALUES (?, 2)',
- novel.id,
- );
- }
- return { ...novel, inLibrary: !novel.inLibrary };
+ const newInLibrary = !novel.inLibrary;
+ await dbManager.write(async tx => {
+ await tx
+ .update(novelSchema)
+ .set({ inLibrary: newInLibrary })
+ .where(eq(novelSchema.id, novel.id))
+ .run();
+
+ if (!newInLibrary) {
+ // Remove from library: delete categories
+ await tx
+ .delete(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novel.id))
+ .run();
+ showToast(getString('browseScreen.removeFromLibrary'));
+ } else {
+ // Add to library: add to default category
+ const defaultCategory = await tx
+ .select({ id: categorySchema.id })
+ .from(categorySchema)
+ .where(eq(categorySchema.sort, 1))
+ .get();
+
+ if (defaultCategory) {
+ await tx
+ .insert(novelCategorySchema)
+ .values({
+ novelId: novel.id,
+ categoryId: defaultCategory.id,
+ })
+ .run();
+ }
+
+ if (novel.pluginId === 'local') {
+ await tx
+ .insert(novelCategorySchema)
+ .values({
+ novelId: novel.id,
+ categoryId: 2,
+ })
+ .onConflictDoNothing()
+ .run();
+ }
+ showToast(getString('browseScreen.addedToLibrary'));
+ }
+ });
+ return { ...novel, inLibrary: newInLibrary };
} else {
const sourceNovel = await fetchNovel(pluginId, novelPath);
const novelId = await insertNovelAndChapters(pluginId, sourceNovel);
if (novelId) {
- await db.runAsync('UPDATE Novel SET inLibrary = 1 WHERE id = ?', novelId);
- await db.runAsync(
- 'INSERT INTO NovelCategory (novelId, categoryId) VALUES (?, (SELECT DISTINCT id FROM Category WHERE sort = 1))',
- novelId,
- );
+ await dbManager.write(async tx => {
+ await tx
+ .update(novelSchema)
+ .set({ inLibrary: true })
+ .where(eq(novelSchema.id, novelId))
+ .run();
+
+ const defaultCategory = await tx
+ .select({ id: categorySchema.id })
+ .from(categorySchema)
+ .where(eq(categorySchema.sort, 1))
+ .get();
+
+ if (defaultCategory) {
+ await tx
+ .insert(novelCategorySchema)
+ .values({
+ novelId: novelId,
+ categoryId: defaultCategory.id,
+ })
+ .run();
+ }
+ });
showToast(getString('browseScreen.addedToLibrary'));
+ return getNovelById(novelId);
}
}
};
-// allow to delete local novels
+/**
+ * Removes multiple novels from the library and clears their categories.
+ */
export const removeNovelsFromLibrary = async (novelIds: Array) => {
- await db.runAsync(
- `UPDATE Novel SET inLibrary = 0 WHERE id IN (${novelIds.join(', ')})`,
- );
- await db.runAsync(
- `DELETE FROM NovelCategory WHERE novelId IN (${novelIds.join(', ')})`,
- );
+ if (!novelIds.length) return;
+
+ await dbManager.write(async tx => {
+ tx.update(novelSchema)
+ .set({ inLibrary: false })
+ .where(inArray(novelSchema.id, novelIds))
+ .run();
+
+ tx.delete(novelCategorySchema)
+ .where(inArray(novelCategorySchema.novelId, novelIds))
+ .run();
+ });
showToast(getString('browseScreen.removeFromLibrary'));
};
-export const getCachedNovels = () => {
- return db.getAllAsync('SELECT * FROM Novel WHERE inLibrary = 0');
+export const getCachedNovels = async (): Promise => {
+ return dbManager
+ .select()
+ .from(novelSchema)
+ .where(eq(novelSchema.inLibrary, false))
+ .all();
};
export const deleteCachedNovels = async () => {
- await db.runAsync('DELETE FROM Novel WHERE inLibrary = 0');
+ await dbManager.write(async tx => {
+ tx.delete(novelSchema).where(eq(novelSchema.inLibrary, false)).run();
+ });
showToast(getString('advancedSettingsScreen.cachedNovelsDeletedToast'));
};
-const restoreFromBackupQuery =
- 'INSERT OR REPLACE INTO Novel (path, name, pluginId, cover, summary, author, artist, status, genres, totalPages) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
-
+/**
+ * Restore a novel from backup using Drizzle ORM.
+ */
export const restoreLibrary = async (novel: NovelInfo) => {
- const sourceNovel = await fetchNovel(novel.pluginId, novel.path);
- let novelId: number | undefined;
-
- await db.withTransactionAsync(async () => {
- const result = await db.runAsync(
- restoreFromBackupQuery,
- sourceNovel.path,
- novel.name,
- novel.pluginId,
- novel.cover || '',
- novel.summary || '',
- novel.author || '',
- novel.artist || '',
- novel.status || '',
- novel.genres || '',
- sourceNovel.totalPages || 0,
- );
- novelId = result.lastInsertRowId;
+ const sourceNovel = await fetchNovel(novel.pluginId, novel.path).catch(e => {
+ throw e;
});
- if (novelId && novelId > 0) {
- await db.runAsync(
- 'INSERT OR REPLACE INTO NovelCategory (novelId, categoryId) VALUES (?, (SELECT DISTINCT id FROM Category WHERE sort = 1))',
- novelId,
- );
- await db.runAsync('UPDATE Novel SET inLibrary = 1 WHERE id = ?', novelId);
+ const novelId = await dbManager.write(async tx => {
+ const row = await tx
+ .insert(novelSchema)
+ .values({
+ path: sourceNovel.path,
+ name: novel.name,
+ pluginId: novel.pluginId,
+ cover: novel.cover || '',
+ summary: novel.summary || '',
+ author: novel.author || '',
+ artist: novel.artist || '',
+ status: novel.status || '',
+ genres: novel.genres || '',
+ totalPages: sourceNovel.totalPages || 0,
+ inLibrary: true,
+ })
+ .onConflictDoUpdate({
+ target: [novelSchema.path, novelSchema.pluginId],
+ set: {
+ name: novel.name,
+ cover: novel.cover || '',
+ summary: novel.summary || '',
+ author: novel.author || '',
+ artist: novel.artist || '',
+ status: novel.status || '',
+ genres: novel.genres || '',
+ totalPages: sourceNovel.totalPages || 0,
+ inLibrary: true,
+ },
+ })
+ .returning()
+ .get();
+
+ if (row) {
+ const defaultCategory = await tx
+ .select({ id: categorySchema.id })
+ .from(categorySchema)
+ .where(eq(categorySchema.sort, 1))
+ .get();
- if (sourceNovel.chapters) {
- await insertChapters(novelId, sourceNovel.chapters);
+ if (defaultCategory) {
+ await tx
+ .insert(novelCategorySchema)
+ .values({
+ novelId: row.id,
+ categoryId: defaultCategory.id,
+ })
+ .onConflictDoNothing()
+ .run();
+ }
}
+ return row?.id;
+ });
+
+ if (novelId && sourceNovel.chapters) {
+ await insertChapters(novelId, sourceNovel.chapters);
}
};
export const updateNovelInfo = async (info: NovelInfo) => {
- await db.runAsync(
- 'UPDATE Novel SET name = ?, cover = ?, path = ?, summary = ?, author = ?, artist = ?, genres = ?, status = ?, isLocal = ? WHERE id = ?',
- info.name,
- info.cover || '',
- info.path,
- info.summary || '',
- info.author || '',
- info.artist || '',
- info.genres || '',
- info.status || '',
- Number(info.isLocal),
- info.id,
- );
+ await dbManager.write(async tx => {
+ tx.update(novelSchema)
+ .set({
+ name: info.name,
+ cover: info.cover || '',
+ path: info.path,
+ summary: info.summary || '',
+ author: info.author || '',
+ artist: info.artist || '',
+ genres: info.genres || '',
+ status: info.status || '',
+ isLocal: info.isLocal,
+ })
+ .where(eq(novelSchema.id, info.id))
+ .run();
+ });
};
+/**
+ * Handles picking and saving a custom novel cover.
+ */
export const pickCustomNovelCover = async (novel: NovelInfo) => {
const image = await DocumentPicker.getDocumentAsync({ type: 'image/*' });
if (image.assets && image.assets[0]) {
@@ -209,11 +334,12 @@ export const pickCustomNovelCover = async (novel: NovelInfo) => {
}
NativeFile.copyFile(image.assets[0].uri, novelCoverUri);
novelCoverUri += '?' + Date.now();
- await db.runAsync(
- 'UPDATE Novel SET cover = ? WHERE id = ?',
- novelCoverUri,
- novel.id,
- );
+ await dbManager.write(async tx => {
+ tx.update(novelSchema)
+ .set({ cover: novelCoverUri })
+ .where(eq(novelSchema.id, novel.id))
+ .run();
+ });
return novelCoverUri;
}
};
@@ -222,70 +348,97 @@ export const updateNovelCategoryById = async (
novelId: number,
categoryIds: number[],
) => {
- for (const categoryId of categoryIds) {
- await db.runAsync(
- 'INSERT INTO NovelCategory (novelId, categoryId) VALUES (?, ?)',
- novelId,
- categoryId,
- );
- }
+ await dbManager.write(async tx => {
+ for (const categoryId of categoryIds) {
+ tx.insert(novelCategorySchema)
+ .values({ novelId, categoryId })
+ .onConflictDoNothing()
+ .run();
+ }
+ });
};
+/**
+ * Updates categories for multiple novels.
+ */
export const updateNovelCategories = async (
novelIds: number[],
categoryIds: number[],
): Promise => {
- await db.runAsync(
- `DELETE FROM NovelCategory WHERE novelId IN (${novelIds.join(
- ',',
- )}) AND categoryId != 2`,
- );
- // if no category is selected => set to the default category
- if (categoryIds.length) {
- for (const novelId of novelIds) {
- for (const categoryId of categoryIds) {
- await db.runAsync(
- `INSERT INTO NovelCategory (novelId, categoryId) VALUES (${novelId}, ${categoryId})`,
- );
+ if (!novelIds.length) return;
+
+ await dbManager.write(async tx => {
+ // Delete existing categories (keeping local category if present)
+ await tx
+ .delete(novelCategorySchema)
+ .where(
+ and(
+ inArray(novelCategorySchema.novelId, novelIds),
+ ne(novelCategorySchema.categoryId, 2),
+ ),
+ )
+ .run();
+
+ if (categoryIds.length) {
+ for (const novelId of novelIds) {
+ for (const categoryId of categoryIds) {
+ tx.insert(novelCategorySchema)
+ .values({ novelId, categoryId })
+ .onConflictDoNothing()
+ .run();
+ }
}
- }
- } else {
- for (const novelId of novelIds) {
- // hacky: insert local novel category -> failed -> ignored
- await db.runAsync(
- `INSERT OR IGNORE INTO NovelCategory (novelId, categoryId)
- VALUES (
- ${novelId},
- IFNULL((SELECT categoryId FROM NovelCategory WHERE novelId = ${novelId}), (SELECT id FROM Category WHERE sort = 1))
- )`,
- );
- }
- }
-};
+ } else {
+ // If no category is selected, set to the default category (sort = 1)
+ const defaultCategory = await tx
+ .select({ id: categorySchema.id })
+ .from(categorySchema)
+ .where(eq(categorySchema.sort, 1))
+ .get();
-const restoreObjectQuery = (table: string, obj: any) => {
- return `
- INSERT INTO ${table}
- (${Object.keys(obj).join(',')})
- VALUES (${Object.keys(obj)
- .map(() => '?')
- .join(',')})
- `;
+ if (defaultCategory) {
+ for (const novelId of novelIds) {
+ // Check if it already has some category (e.g. local)
+ const hasCategory = await tx
+ .select({ count: sql`count(*)` })
+ .from(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novelId))
+ .get();
+
+ if (!hasCategory || hasCategory.count === 0) {
+ tx.insert(novelCategorySchema)
+ .values({
+ novelId: novelId,
+ categoryId: defaultCategory.id,
+ })
+ .run();
+ }
+ }
+ }
+ }
+ });
};
+/**
+ * Restores novel and chapters from a backup object.
+ */
export const _restoreNovelAndChapters = async (backupNovel: BackupNovel) => {
const { chapters, ...novel } = backupNovel;
- await db.runAsync('DELETE FROM Novel WHERE id = ?', novel.id);
- await db.runAsync(
- restoreObjectQuery('Novel', novel),
- ...(Object.values(novel) as (string | number)[]),
- );
- if (chapters.length > 0) {
- for (const chapter of chapters) {
- await db.runAsync(
- restoreObjectQuery('Chapter', chapter),
- ...(Object.values(chapter) as (string | number)[]),
- );
+ await dbManager.write(async tx => {
+ // Delete existing novel data
+ tx.delete(novelSchema).where(eq(novelSchema.id, novel.id)).run();
+ tx.delete(chapterSchema).where(eq(chapterSchema.novelId, novel.id)).run();
+
+ // Restore novel
+ tx.insert(novelSchema).values(novel).run();
+
+ // Restore chapters in batches
+ if (chapters.length > 0) {
+ const BATCH_SIZE = 100;
+ for (let i = 0; i < chapters.length; i += BATCH_SIZE) {
+ const batch = chapters.slice(i, i + BATCH_SIZE);
+ tx.insert(chapterSchema).values(batch).run();
+ }
}
- }
+ });
};
diff --git a/src/database/queries/RepositoryQueries.ts b/src/database/queries/RepositoryQueries.ts
index d8dd7423b1..8a8f90073f 100644
--- a/src/database/queries/RepositoryQueries.ts
+++ b/src/database/queries/RepositoryQueries.ts
@@ -1,20 +1,50 @@
-import { Repository } from '@database/types';
-import { db } from '@database/db';
+import { eq } from 'drizzle-orm';
+import { dbManager } from '@database/db';
+import { repositorySchema, type RepositoryRow } from '@database/schema';
-export const getRepositoriesFromDb = () =>
- db.getAllSync('SELECT * FROM Repository');
+export const getRepositoriesFromDb = async (): Promise => {
+ return dbManager.select().from(repositorySchema).all();
+};
-export const isRepoUrlDuplicated = (repoUrl: string) =>
- (db.getFirstSync<{ isDuplicated: number }>(
- 'SELECT COUNT(*) as isDuplicated FROM Repository WHERE url = ?',
- repoUrl,
- )?.isDuplicated || 0) > 0;
+export const isRepoUrlDuplicated = async (repoUrl: string) => {
+ const result = await dbManager
+ .select({ count: repositorySchema.id })
+ .from(repositorySchema)
+ .where(eq(repositorySchema.url, repoUrl))
+ .get();
-export const createRepository = (repoUrl: string) =>
- db.runSync('INSERT INTO Repository (url) VALUES (?)', repoUrl);
+ return !!result;
+};
-export const deleteRepositoryById = (id: number) =>
- db.runSync('DELETE FROM Repository WHERE id = ?', id);
+export const createRepository = async (
+ repoUrl: string,
+): Promise => {
+ const row = await dbManager.write(
+ async tx =>
+ await tx
+ .insert(repositorySchema)
+ .values({ url: repoUrl })
+ .returning()
+ .get(),
+ );
+ return row;
+};
-export const updateRepository = (id: number, url: string) =>
- db.runSync('UPDATE Repository SET url = ? WHERE id = ?', url, id);
+export const deleteRepositoryById = async (id: number): Promise => {
+ await dbManager.write(async tx => {
+ await tx.delete(repositorySchema).where(eq(repositorySchema.id, id)).run();
+ });
+};
+
+export const updateRepository = async (
+ id: number,
+ url: string,
+): Promise => {
+ await dbManager.write(async tx => {
+ await tx
+ .update(repositorySchema)
+ .set({ url })
+ .where(eq(repositorySchema.id, id))
+ .run();
+ });
+};
diff --git a/src/database/queries/StatsQueries.ts b/src/database/queries/StatsQueries.ts
index ce402aecd8..ee1ce1c0e0 100644
--- a/src/database/queries/StatsQueries.ts
+++ b/src/database/queries/StatsQueries.ts
@@ -1,99 +1,129 @@
import { countBy } from 'lodash-es';
-import { db } from '@database/db';
+import { eq, count, and, sql } from 'drizzle-orm';
import { LibraryStats } from '../types';
+import { dbManager } from '@database/db';
+import { novelSchema, chapterSchema } from '@database/schema';
-const getLibraryStatsQuery = `
- SELECT COUNT(*) as novelsCount, COUNT(DISTINCT pluginId) as sourcesCount
- FROM Novel
- WHERE inLibrary = 1
- `;
-
-const getChaptersReadCountQuery = `
- SELECT COUNT(*) as chaptersRead
- FROM Chapter
- JOIN Novel
- ON Chapter.novelId = Novel.id
- WHERE Chapter.unread = 0 AND Novel.inLibrary = 1
- `;
-
-const getChaptersTotalCountQuery = `
- SELECT COUNT(*) as chaptersCount
- FROM Chapter
- JOIN Novel
- ON Chapter.novelId = Novel.id
- WHERE Novel.inLibrary = 1
- `;
-
-const getChaptersUnreadCountQuery = `
- SELECT COUNT(*) as chaptersUnread
- FROM Chapter
- JOIN Novel
- ON Chapter.novelId = Novel.id
- WHERE Chapter.unread = 1 AND Novel.inLibrary = 1
- `;
-
-const getChaptersDownloadedCountQuery = `
- SELECT COUNT(*) as chaptersDownloaded
- FROM Chapter
- JOIN Novel
- ON Chapter.novelId = Novel.id
- WHERE Chapter.isDownloaded = 1 AND Novel.inLibrary = 1
- `;
-
-const getNovelGenresQuery = `
- SELECT genres
- FROM Novel
- WHERE Novel.inLibrary = 1
- `;
-
-const getNovelStatusQuery = `
- SELECT status
- FROM Novel
- WHERE Novel.inLibrary = 1
- `;
-
-export const getLibraryStatsFromDb = (): Promise => {
- return db.getFirstAsync(getLibraryStatsQuery);
+/**
+ * Get library statistics (novel count and distinct sources) using Drizzle ORM
+ */
+export const getLibraryStatsFromDb = async (): Promise => {
+ const result = await dbManager
+ .select({
+ novelsCount: count(),
+ sourcesCount: sql`COUNT(DISTINCT ${novelSchema.pluginId})`,
+ })
+ .from(novelSchema)
+ .where(eq(novelSchema.inLibrary, true))
+ .get();
+
+ return result ?? { novelsCount: 0, sourcesCount: 0 };
};
-export const getChaptersTotalCountFromDb = (): Promise => {
- return db.getFirstAsync(getChaptersTotalCountQuery);
+/**
+ * Get total chapters count for all novels in library
+ */
+export const getChaptersTotalCountFromDb = async (): Promise => {
+ const result = await dbManager
+ .select({ chaptersCount: count() })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(chapterSchema.novelId, novelSchema.id))
+ .where(eq(novelSchema.inLibrary, true))
+ .get();
+
+ return result ?? { chaptersCount: 0 };
};
-export const getChaptersReadCountFromDb = (): Promise => {
- return db.getFirstAsync(getChaptersReadCountQuery);
+/**
+ * Get total read chapters count for all novels in library
+ */
+export const getChaptersReadCountFromDb = async (): Promise => {
+ const result = await dbManager
+ .select({ chaptersRead: count() })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(chapterSchema.novelId, novelSchema.id))
+ .where(
+ and(eq(novelSchema.inLibrary, true), eq(chapterSchema.unread, false)),
+ )
+ .get();
+
+ return result ?? { chaptersRead: 0 };
};
-export const getChaptersUnreadCountFromDb =
- (): Promise => {
- return db.getFirstAsync(getChaptersUnreadCountQuery);
- };
+/**
+ * Get total unread chapters count for all novels in library
+ */
+export const getChaptersUnreadCountFromDb = async (): Promise => {
+ const result = await dbManager
+ .select({ chaptersUnread: count() })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(chapterSchema.novelId, novelSchema.id))
+ .where(and(eq(novelSchema.inLibrary, true), eq(chapterSchema.unread, true)))
+ .get();
+ return result ?? { chaptersUnread: 0 };
+};
+
+/**
+ * Get total downloaded chapters count for all novels in library
+ */
export const getChaptersDownloadedCountFromDb =
- (): Promise => {
- return db.getFirstAsync(getChaptersDownloadedCountQuery);
+ async (): Promise => {
+ const result = await dbManager
+ .select({ chaptersDownloaded: count() })
+ .from(chapterSchema)
+ .innerJoin(novelSchema, eq(chapterSchema.novelId, novelSchema.id))
+ .where(
+ and(
+ eq(novelSchema.inLibrary, true),
+ eq(chapterSchema.isDownloaded, true),
+ ),
+ )
+ .get();
+
+ return result ?? { chaptersDownloaded: 0 };
};
+/**
+ * Get genre distribution for all novels in library
+ */
export const getNovelGenresFromDb = async (): Promise => {
+ const res = await dbManager
+ .select({ genres: novelSchema.genres })
+ .from(novelSchema)
+ .where(eq(novelSchema.inLibrary, true))
+ .all();
+
const genres: string[] = [];
- const res = await db.getAllAsync<{ genres: string }>(getNovelGenresQuery);
res.forEach(item => {
const novelGenres = item.genres?.split(/\s*,\s*/);
+
if (novelGenres?.length) {
genres.push(...novelGenres);
}
});
+
return { genres: countBy(genres) };
};
+/**
+ * Get status distribution for all novels in library
+ */
export const getNovelStatusFromDb = async (): Promise => {
- const status: string[] = [];
- const res = await db.getAllAsync<{ status: string }>(getNovelStatusQuery);
+ const res = await dbManager
+ .select({ status: novelSchema.status })
+ .from(novelSchema)
+ .where(eq(novelSchema.inLibrary, true))
+ .all();
+
+ const statusList: string[] = [];
res.forEach(item => {
const novelStatus = item.status?.split(/\s*,\s*/);
+
if (novelStatus?.length) {
- status.push(...novelStatus);
+ statusList.push(...novelStatus);
}
});
- return { status: countBy(status) };
+
+ return { status: countBy(statusList) };
};
diff --git a/src/database/queries/__tests__/CategoryQueries.test.ts b/src/database/queries/__tests__/CategoryQueries.test.ts
new file mode 100644
index 0000000000..5e49d6e071
--- /dev/null
+++ b/src/database/queries/__tests__/CategoryQueries.test.ts
@@ -0,0 +1,272 @@
+/**
+ * Tests for CategoryQueries
+ *
+ * These tests use a real in-memory database to verify actual data returned by queries.
+ */
+
+import './mockDb';
+import { setupTestDatabase, getTestDb, teardownTestDatabase } from './setup';
+import {
+ insertTestCategory,
+ insertTestNovel,
+ insertTestNovelCategory,
+ clearAllTables,
+} from './testData';
+import { categorySchema, novelCategorySchema } from '@database/schema';
+import { eq, sql } from 'drizzle-orm';
+
+import {
+ getCategoriesFromDb,
+ getCategoriesWithCount,
+ createCategory,
+ isCategoryNameDuplicate,
+ updateCategory,
+ deleteCategoryById,
+ updateCategoryOrderInDb,
+ getAllNovelCategories,
+} from '../CategoryQueries';
+import { showToast } from '@utils/showToast';
+
+describe('CategoryQueries', () => {
+ beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb);
+ });
+
+ afterAll(() => {
+ teardownTestDatabase();
+ });
+
+ describe('getCategoriesFromDb', () => {
+ it('should return all categories with novel IDs', async () => {
+ const testDb = getTestDb();
+
+ const categoryId = await insertTestCategory(testDb, {
+ name: 'Test Category',
+ });
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestNovelCategory(testDb, novelId, categoryId);
+
+ const result = await getCategoriesFromDb();
+
+ expect(result.length).toBeGreaterThanOrEqual(3); // Default + Local + Test Category
+ const testCat = result.find(c => c.id === categoryId);
+ expect(testCat).toBeDefined();
+ expect(testCat?.novelIds).toBe(String(novelId));
+ });
+ });
+
+ describe('createCategory', () => {
+ it('should create a new category', async () => {
+ const result = await createCategory('New Category');
+
+ expect(result).toBeDefined();
+ expect(result.name).toBe('New Category');
+ expect(result.id).toBeGreaterThan(2); // Greater than default categories
+ });
+
+ it('should auto-assign sort order', async () => {
+ const cat1 = await createCategory('Category 1');
+ const cat2 = await createCategory('Category 2');
+
+ expect(cat2.sort).toBeGreaterThan(cat1.sort!);
+ });
+ });
+
+ describe('isCategoryNameDuplicate', () => {
+ it('should return true when category name exists', async () => {
+ const testDb = getTestDb();
+
+ await insertTestCategory(testDb, { name: 'Existing Category' });
+
+ const result = isCategoryNameDuplicate('Existing Category');
+
+ expect(result).toBe(true);
+ });
+
+ it('should return false when category name does not exist', () => {
+ const result = isCategoryNameDuplicate('Non-existent Category');
+
+ expect(result).toBe(false);
+ });
+ });
+
+ describe('updateCategory', () => {
+ it('should update category name', async () => {
+ const testDb = getTestDb();
+
+ const categoryId = await insertTestCategory(testDb, { name: 'Old Name' });
+
+ await updateCategory(categoryId, 'New Name');
+
+ const categories = await getCategoriesFromDb();
+ const updated = categories.find(c => c.id === categoryId);
+ expect(updated?.name).toBe('New Name');
+ });
+ });
+
+ describe('getCategoriesWithCount', () => {
+ it('should return categories with novel counts', async () => {
+ const testDb = getTestDb();
+ const novelId1 = await insertTestNovel(testDb, { inLibrary: true });
+ const novelId2 = await insertTestNovel(testDb, { inLibrary: true });
+ const categoryId = await insertTestCategory(testDb, {
+ name: 'Test Category',
+ });
+ await insertTestNovelCategory(testDb, novelId1, categoryId);
+ await insertTestNovelCategory(testDb, novelId2, categoryId);
+
+ const result = await getCategoriesWithCount([novelId1, novelId2]);
+
+ const testCat = result.find(c => c.id === categoryId);
+ expect(testCat).toBeDefined();
+ expect(testCat?.novelsCount).toBe(2);
+ });
+
+ it('should handle empty novel IDs array', async () => {
+ const result = await getCategoriesWithCount([]);
+
+ expect(result.length).toBeGreaterThan(0);
+ // Should exclude category ID 2
+ expect(result.every(c => c.id !== 2)).toBe(true);
+ });
+
+ it('should exclude category ID 2', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ const result = await getCategoriesWithCount([novelId]);
+
+ expect(result.every(c => c.id !== 2)).toBe(true);
+ });
+ });
+
+ describe('deleteCategoryById', () => {
+ it('should prevent deletion of default categories', async () => {
+ const testDb = getTestDb();
+ const defaultCategory = await testDb.drizzleDb
+ .select()
+ .from(categorySchema)
+ .where(sql`${categorySchema.id} <= 2`)
+ .get();
+
+ if (defaultCategory) {
+ await deleteCategoryById({
+ id: defaultCategory.id,
+ name: 'Default',
+ sort: defaultCategory.sort || 0,
+ });
+
+ // Should show toast and not delete
+ // eslint-disable-next-line jest/no-conditional-expect
+ expect(showToast).toHaveBeenCalled();
+ }
+ });
+
+ it('should delete category and reassign novels to default', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const categoryId = await insertTestCategory(testDb, {
+ name: 'To Delete',
+ });
+ await insertTestNovelCategory(testDb, novelId, categoryId);
+
+ // Get default category
+ const defaultCategory = await testDb.drizzleDb
+ .select()
+ .from(categorySchema)
+ .where(sql`${categorySchema.sort} = 1`)
+ .get();
+
+ const categoryToDelete = await testDb.drizzleDb
+ .select()
+ .from(categorySchema)
+ .where(eq(categorySchema.id, categoryId))
+ .get();
+
+ if (categoryToDelete) {
+ await deleteCategoryById({
+ id: categoryId,
+ name: 'To Delete',
+ sort: categoryToDelete.sort || 0,
+ });
+ }
+
+ // Check category is deleted
+ const categories = await getCategoriesFromDb();
+ expect(categories.find(c => c.id === categoryId)).toBeUndefined();
+
+ // Check novel is reassigned to default category
+ if (defaultCategory) {
+ const associations = await testDb.drizzleDb
+ .select()
+ .from(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novelId))
+ .all();
+ // eslint-disable-next-line jest/no-conditional-expect
+ expect(
+ associations.some(a => a.categoryId === defaultCategory.id),
+ ).toBe(true);
+ }
+ });
+ });
+
+ describe('updateCategoryOrderInDb', () => {
+ it('should update sort order for multiple categories', async () => {
+ const testDb = getTestDb();
+ const cat1 = await insertTestCategory(testDb, {
+ name: 'Cat 1',
+ sort: 10,
+ });
+ const cat2 = await insertTestCategory(testDb, {
+ name: 'Cat 2',
+ sort: 20,
+ });
+
+ await updateCategoryOrderInDb([
+ { id: cat1, name: 'Cat 1', sort: 30 },
+ { id: cat2, name: 'Cat 2', sort: 40 },
+ ]);
+
+ const categories = await getCategoriesFromDb();
+ const updated1 = categories.find(c => c.id === cat1);
+ const updated2 = categories.find(c => c.id === cat2);
+ expect(updated1?.sort).toBe(30);
+ expect(updated2?.sort).toBe(40);
+ });
+
+ it('should handle empty array', async () => {
+ await expect(updateCategoryOrderInDb([])).resolves.not.toThrow();
+ });
+ });
+
+ describe('getAllNovelCategories', () => {
+ it('should return all novel-category associations', async () => {
+ const testDb = getTestDb();
+ const novelId1 = await insertTestNovel(testDb, { inLibrary: true });
+ const novelId2 = await insertTestNovel(testDb, { inLibrary: true });
+ const categoryId = await insertTestCategory(testDb, {
+ name: 'Test Category',
+ });
+ await insertTestNovelCategory(testDb, novelId1, categoryId);
+ await insertTestNovelCategory(testDb, novelId2, categoryId);
+
+ const result = await getAllNovelCategories();
+
+ expect(result.length).toBeGreaterThanOrEqual(2);
+ expect(
+ result.some(r => r.novelId === novelId1 && r.categoryId === categoryId),
+ ).toBe(true);
+ expect(
+ result.some(r => r.novelId === novelId2 && r.categoryId === categoryId),
+ ).toBe(true);
+ });
+
+ it('should return empty array when no associations', async () => {
+ const result = await getAllNovelCategories();
+
+ // May have default associations, so just check it's an array
+ expect(Array.isArray(result)).toBe(true);
+ });
+ });
+});
diff --git a/src/database/queries/__tests__/ChapterQueries.test.ts b/src/database/queries/__tests__/ChapterQueries.test.ts
new file mode 100644
index 0000000000..4777f451b3
--- /dev/null
+++ b/src/database/queries/__tests__/ChapterQueries.test.ts
@@ -0,0 +1,1006 @@
+/**
+ * Tests for ChapterQueries
+ *
+ * These tests use a real in-memory database to verify actual data returned by queries.
+ */
+
+import './mockDb';
+import { setupTestDatabase, getTestDb, teardownTestDatabase } from './setup';
+import { insertTestNovel, insertTestChapter, clearAllTables } from './testData';
+
+import {
+ markChapterRead,
+ markChaptersRead,
+ markChapterUnread,
+ markChaptersUnread,
+ markAllChaptersRead,
+ markAllChaptersUnread,
+ getNovelChapters,
+ getUnreadNovelChapters,
+ getAllUndownloadedChapters,
+ getAllUndownloadedAndUnreadChapters,
+ getChapter,
+ getCustomPages,
+ getPageChapters,
+ getChapterCount,
+ getPageChaptersBatched,
+ getPrevChapter,
+ getNextChapter,
+ getDownloadedChapters,
+ getNovelDownloadedChapters,
+ getUpdatedOverviewFromDb,
+ getDetailedUpdatesFromDb,
+ isChapterDownloaded,
+ bookmarkChapter,
+ insertChapters,
+ deleteChapter,
+ deleteChapters,
+ deleteDownloads,
+ deleteReadChaptersFromDb,
+ updateChapterProgress,
+ updateChapterProgressByIds,
+ markPreviuschaptersRead,
+ markPreviousChaptersUnread,
+ clearUpdates,
+} from '../ChapterQueries';
+
+describe('ChapterQueries', () => {
+ beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb);
+ });
+
+ afterAll(() => {
+ teardownTestDatabase();
+ });
+
+ describe('markChapterRead', () => {
+ it('should mark chapter as read', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ unread: true,
+ });
+
+ await markChapterRead(chapterId);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter = chapters.find(c => c.id === chapterId);
+ expect(chapter?.unread).toBe(false);
+ });
+ });
+
+ describe('markChapterUnread', () => {
+ it('should mark chapter as unread', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ unread: false,
+ });
+
+ await markChapterUnread(chapterId);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter = chapters.find(c => c.id === chapterId);
+ expect(chapter?.unread).toBe(true);
+ });
+ });
+
+ describe('bookmarkChapter', () => {
+ it('should bookmark a chapter', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ bookmark: false,
+ });
+
+ await bookmarkChapter(chapterId);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter = chapters.find(c => c.id === chapterId);
+ expect(chapter?.bookmark).toBe(true);
+ });
+ });
+
+ describe('getNovelChapters', () => {
+ it('should return all chapters for a novel', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { name: 'Chapter 1' });
+ await insertTestChapter(testDb, novelId, { name: 'Chapter 2' });
+
+ const result = await getNovelChapters(novelId);
+
+ expect(result).toHaveLength(2);
+ expect(result.map(c => c.name)).toContain('Chapter 1');
+ expect(result.map(c => c.name)).toContain('Chapter 2');
+ });
+ });
+
+ describe('markChaptersRead', () => {
+ it('should mark multiple chapters as read', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId1 = await insertTestChapter(testDb, novelId, {
+ unread: true,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ unread: true,
+ });
+
+ await markChaptersRead([chapterId1, chapterId2]);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter1 = chapters.find(c => c.id === chapterId1);
+ const chapter2 = chapters.find(c => c.id === chapterId2);
+ expect(chapter1?.unread).toBe(false);
+ expect(chapter2?.unread).toBe(false);
+ });
+
+ it('should handle empty array', async () => {
+ await expect(markChaptersRead([])).resolves.not.toThrow();
+ });
+
+ it('should handle already read chapters', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ unread: false,
+ });
+
+ await markChaptersRead([chapterId]);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter = chapters.find(c => c.id === chapterId);
+ expect(chapter?.unread).toBe(false);
+ });
+ });
+
+ describe('markChaptersUnread', () => {
+ it('should mark multiple chapters as unread', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId1 = await insertTestChapter(testDb, novelId, {
+ unread: false,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ unread: false,
+ });
+
+ await markChaptersUnread([chapterId1, chapterId2]);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter1 = chapters.find(c => c.id === chapterId1);
+ const chapter2 = chapters.find(c => c.id === chapterId2);
+ expect(chapter1?.unread).toBe(true);
+ expect(chapter2?.unread).toBe(true);
+ });
+
+ it('should handle empty array', async () => {
+ await expect(markChaptersUnread([])).resolves.not.toThrow();
+ });
+ });
+
+ describe('markAllChaptersRead', () => {
+ it('should mark all chapters as read for a novel', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { unread: true });
+ await insertTestChapter(testDb, novelId, { unread: true });
+ await insertTestChapter(testDb, novelId, { unread: true });
+
+ await markAllChaptersRead(novelId);
+
+ const chapters = await getNovelChapters(novelId);
+ expect(chapters.every(c => c.unread === false)).toBe(true);
+ });
+
+ it('should handle novel with no chapters', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await expect(markAllChaptersRead(novelId)).resolves.not.toThrow();
+ });
+ });
+
+ describe('markAllChaptersUnread', () => {
+ it('should mark all chapters as unread for a novel', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { unread: false });
+ await insertTestChapter(testDb, novelId, { unread: false });
+
+ await markAllChaptersUnread(novelId);
+
+ const chapters = await getNovelChapters(novelId);
+ expect(chapters.every(c => c.unread === true)).toBe(true);
+ });
+ });
+
+ describe('insertChapters', () => {
+ it('should handle empty array', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await expect(insertChapters(novelId, [])).resolves.not.toThrow();
+ });
+
+ it('should insert single chapter', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await insertChapters(novelId, [
+ {
+ path: '/chapter/1',
+ name: 'Chapter 1',
+ releaseTime: '2024-01-01',
+ chapterNumber: 1,
+ page: '1',
+ },
+ ]);
+
+ const chapters = await getNovelChapters(novelId);
+ expect(chapters).toHaveLength(1);
+ expect(chapters[0].name).toBe('Chapter 1');
+ expect(chapters[0].position).toBe(0);
+ });
+
+ it('should insert multiple chapters', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await insertChapters(novelId, [
+ {
+ path: '/chapter/1',
+ name: 'Chapter 1',
+ chapterNumber: 1,
+ page: '1',
+ },
+ {
+ path: '/chapter/2',
+ name: 'Chapter 2',
+ chapterNumber: 2,
+ page: '1',
+ },
+ ]);
+
+ const chapters = await getNovelChapters(novelId);
+ expect(chapters).toHaveLength(2);
+ expect(chapters[0].position).toBe(0);
+ expect(chapters[1].position).toBe(1);
+ });
+
+ it('should handle conflict resolution (on conflict update)', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await insertChapters(novelId, [
+ {
+ path: '/chapter/1',
+ name: 'Chapter 1',
+ chapterNumber: 1,
+ page: '1',
+ },
+ ]);
+
+ // Insert again with updated name
+ await insertChapters(novelId, [
+ {
+ path: '/chapter/1',
+ name: 'Chapter 1 Updated',
+ chapterNumber: 1,
+ page: '1',
+ },
+ ]);
+
+ const chapters = await getNovelChapters(novelId);
+ expect(chapters).toHaveLength(1);
+ expect(chapters[0].name).toBe('Chapter 1 Updated');
+ });
+
+ it('should assign default chapter name when missing', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await insertChapters(novelId, [
+ {
+ path: '/chapter/1',
+ name: '', // Empty name to test default behavior
+ chapterNumber: 1,
+ page: '1',
+ },
+ ]);
+
+ const chapters = await getNovelChapters(novelId);
+ expect(chapters[0].name).toBe('Chapter 1');
+ });
+ });
+
+ describe('deleteChapter', () => {
+ it('should delete chapter and update isDownloaded flag', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'test-plugin',
+ });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ });
+
+ await deleteChapter('test-plugin', novelId, chapterId);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter = chapters.find(c => c.id === chapterId);
+ expect(chapter?.isDownloaded).toBe(false);
+ });
+ });
+
+ describe('deleteChapters', () => {
+ it('should handle empty array', async () => {
+ await expect(deleteChapters('test-plugin', 1, [])).resolves.not.toThrow();
+ });
+
+ it('should delete multiple chapters', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'test-plugin',
+ });
+ const chapterId1 = await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ });
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter1b = chapters.find(c => c.id === chapterId1);
+ const chapter2b = chapters.find(c => c.id === chapterId2);
+ expect(chapter1b?.isDownloaded).toBe(true);
+ expect(chapter2b?.isDownloaded).toBe(true);
+ await deleteChapters('test-plugin', novelId, [
+ { id: chapterId1 } as any,
+ { id: chapterId2 } as any,
+ ]);
+
+ const updatedChapters = await getNovelChapters(novelId);
+ const chapter1a = updatedChapters.find(c => c.id === chapterId1);
+ const chapter2a = updatedChapters.find(c => c.id === chapterId2);
+ expect(chapter1a?.isDownloaded).toBe(false);
+ expect(chapter2a?.isDownloaded).toBe(false);
+ });
+ });
+
+ describe('deleteDownloads', () => {
+ it('should handle empty array', async () => {
+ await expect(deleteDownloads([])).resolves.not.toThrow();
+ });
+
+ it('should delete multiple downloads', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'test-plugin',
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ });
+
+ const chapters = await getNovelChapters(novelId);
+ const downloadedChapters = chapters.filter(c => c.isDownloaded);
+ await deleteDownloads(
+ downloadedChapters.map(c => ({
+ id: c.id,
+ novelId,
+ pluginId: 'test-plugin',
+ })) as any,
+ );
+
+ const updatedChapters = await getNovelChapters(novelId);
+ expect(updatedChapters.every(c => c.isDownloaded === false)).toBe(true);
+ });
+ });
+
+ describe('deleteReadChaptersFromDb', () => {
+ it('should delete only read downloaded chapters', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'test-plugin',
+ });
+ const readDownloadedId = await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ unread: false,
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ unread: true, // Unread, should not be deleted
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: false,
+ unread: false, // Not downloaded, should not be deleted
+ });
+
+ await deleteReadChaptersFromDb();
+
+ const chapters = await getNovelChapters(novelId);
+ const deletedChapter = chapters.find(c => c.id === readDownloadedId);
+ expect(deletedChapter?.isDownloaded).toBe(false);
+ });
+ });
+
+ describe('updateChapterProgress', () => {
+ it('should update chapter progress', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ progress: null,
+ });
+
+ await updateChapterProgress(chapterId, 50);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter = chapters.find(c => c.id === chapterId);
+ expect(chapter?.progress).toBe(50);
+ });
+ });
+
+ describe('updateChapterProgressByIds', () => {
+ it('should handle empty array', async () => {
+ await expect(updateChapterProgressByIds([], 50)).resolves.not.toThrow();
+ });
+
+ it('should update progress for multiple chapters', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId1 = await insertTestChapter(testDb, novelId);
+ const chapterId2 = await insertTestChapter(testDb, novelId);
+
+ await updateChapterProgressByIds([chapterId1, chapterId2], 75);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter1 = chapters.find(c => c.id === chapterId1);
+ const chapter2 = chapters.find(c => c.id === chapterId2);
+ expect(chapter1?.progress).toBe(75);
+ expect(chapter2?.progress).toBe(75);
+ });
+ });
+
+ describe('markPreviuschaptersRead', () => {
+ it('should mark previous chapters as read', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId1 = await insertTestChapter(testDb, novelId, {
+ unread: true,
+ position: 0,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ unread: true,
+ position: 1,
+ });
+ const chapterId3 = await insertTestChapter(testDb, novelId, {
+ unread: true,
+ position: 2,
+ });
+
+ await markPreviuschaptersRead(chapterId2, novelId);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter1 = chapters.find(c => c.id === chapterId1);
+ const chapter2 = chapters.find(c => c.id === chapterId2);
+ const chapter3 = chapters.find(c => c.id === chapterId3);
+ expect(chapter1?.unread).toBe(false);
+ expect(chapter2?.unread).toBe(false);
+ expect(chapter3?.unread).toBe(true);
+ });
+ });
+
+ describe('markPreviousChaptersUnread', () => {
+ it('should mark previous chapters as unread', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId1 = await insertTestChapter(testDb, novelId, {
+ unread: false,
+ position: 0,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ unread: false,
+ position: 1,
+ });
+ const chapterId3 = await insertTestChapter(testDb, novelId, {
+ unread: false,
+ position: 2,
+ });
+
+ await markPreviousChaptersUnread(chapterId2, novelId);
+
+ const chapters = await getNovelChapters(novelId);
+ const chapter1 = chapters.find(c => c.id === chapterId1);
+ const chapter2 = chapters.find(c => c.id === chapterId2);
+ const chapter3 = chapters.find(c => c.id === chapterId3);
+ expect(chapter1?.unread).toBe(true);
+ expect(chapter2?.unread).toBe(true);
+ expect(chapter3?.unread).toBe(false);
+ });
+ });
+
+ describe('clearUpdates', () => {
+ it('should clear all update timestamps', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ updatedTime: '2024-01-01',
+ });
+ await insertTestChapter(testDb, novelId, {
+ updatedTime: '2024-01-02',
+ });
+
+ await clearUpdates();
+
+ const chapters = await getNovelChapters(novelId);
+ expect(chapters.every(c => c.updatedTime === null)).toBe(true);
+ });
+ });
+
+ describe('getCustomPages', () => {
+ it('should return distinct pages for a novel', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { page: '1' });
+ await insertTestChapter(testDb, novelId, { page: '2' });
+ await insertTestChapter(testDb, novelId, { page: '2' }); // Duplicate
+
+ const result = await getCustomPages(novelId);
+
+ expect(result).toHaveLength(2);
+ expect(result.map(r => r.page)).toContain('1');
+ expect(result.map(r => r.page)).toContain('2');
+ });
+
+ it('should return empty array when no pages', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ const result = await getCustomPages(novelId);
+
+ expect(result).toHaveLength(0);
+ });
+ });
+
+ describe('getUnreadNovelChapters', () => {
+ it('should return only unread chapters', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { unread: true });
+ await insertTestChapter(testDb, novelId, { unread: false });
+ await insertTestChapter(testDb, novelId, { unread: true });
+
+ const result = await getUnreadNovelChapters(novelId);
+
+ expect(result).toHaveLength(2);
+ expect(result.every(c => c.unread === true)).toBe(true);
+ });
+
+ it('should return empty array when no unread chapters', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { unread: false });
+
+ const result = await getUnreadNovelChapters(novelId);
+
+ expect(result).toHaveLength(0);
+ });
+ });
+
+ describe('getAllUndownloadedChapters', () => {
+ it('should return only undownloaded chapters', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { isDownloaded: false });
+ await insertTestChapter(testDb, novelId, { isDownloaded: true });
+ await insertTestChapter(testDb, novelId, { isDownloaded: false });
+
+ const result = await getAllUndownloadedChapters(novelId);
+
+ expect(result).toHaveLength(2);
+ expect(result.every(c => c.isDownloaded === false)).toBe(true);
+ });
+ });
+
+ describe('getAllUndownloadedAndUnreadChapters', () => {
+ it('should return chapters that are both undownloaded and unread', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: false,
+ unread: true,
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ unread: true,
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: false,
+ unread: false,
+ });
+
+ const result = await getAllUndownloadedAndUnreadChapters(novelId);
+
+ expect(result).toHaveLength(1);
+ expect(result[0].isDownloaded).toBe(false);
+ expect(result[0].unread).toBe(true);
+ });
+ });
+
+ describe('getChapter', () => {
+ it('should return a single chapter', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ name: 'Test Chapter',
+ });
+
+ const result = await getChapter(chapterId);
+
+ expect(result).toBeDefined();
+ expect(result?.name).toBe('Test Chapter');
+ });
+
+ it('should return undefined for non-existent chapter', async () => {
+ const result = await getChapter(999);
+
+ expect(result).toBeUndefined();
+ });
+ });
+
+ describe('getPageChapters', () => {
+ it('should return chapters for a specific page', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { page: '1' });
+ await insertTestChapter(testDb, novelId, { page: '2' });
+ await insertTestChapter(testDb, novelId, { page: '1' });
+
+ const result = await getPageChapters(novelId, undefined, undefined, '1');
+
+ expect(result).toHaveLength(2);
+ expect(result.every(c => c.page === '1')).toBe(true);
+ });
+
+ it('should handle limit and offset', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { page: '1', position: 0 });
+ await insertTestChapter(testDb, novelId, { page: '1', position: 1 });
+ await insertTestChapter(testDb, novelId, { page: '1', position: 2 });
+
+ const result = await getPageChapters(
+ novelId,
+ undefined,
+ undefined,
+ '1',
+ 1,
+ 1,
+ );
+
+ expect(result).toHaveLength(1);
+ });
+ });
+
+ describe('getChapterCount', () => {
+ it('should return correct chapter count for a page', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { page: '1' });
+ await insertTestChapter(testDb, novelId, { page: '1' });
+ await insertTestChapter(testDb, novelId, { page: '2' });
+
+ const result = await getChapterCount(novelId, '1');
+
+ expect(result).toBe(2);
+ });
+ });
+
+ describe('getPageChaptersBatched', () => {
+ it('should return chapters in batches', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ // Create more than 300 chapters to test batching
+ for (let i = 0; i < 5; i++) {
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: i,
+ });
+ }
+
+ const batch0 = await getPageChaptersBatched(
+ novelId,
+ undefined,
+ undefined,
+ '1',
+ 0,
+ );
+ expect(batch0.length).toBeGreaterThanOrEqual(0);
+ });
+ });
+
+ describe('getPrevChapter', () => {
+ it('should return previous chapter in same page', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 0,
+ });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 1,
+ });
+
+ const result = await getPrevChapter(novelId, 1, '1');
+
+ expect(result).toBeDefined();
+ expect(result?.position).toBe(0);
+ });
+
+ it('should return previous chapter from previous page', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 0,
+ });
+ await insertTestChapter(testDb, novelId, {
+ page: '2',
+ position: 0,
+ });
+
+ const result = await getPrevChapter(novelId, 0, '2');
+
+ expect(result).toBeDefined();
+ expect(result?.page).toBe('1');
+ });
+ it('should return previous chapter from the same page and not the previous one', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 0,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 1,
+ });
+ await insertTestChapter(testDb, novelId, {
+ page: '2',
+ position: 1,
+ });
+
+ const result = await getPrevChapter(novelId, 1, '2');
+
+ expect(result?.id).toBe(chapterId2);
+ });
+ });
+
+ describe('getNextChapter', () => {
+ it('should return next chapter in same page', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 0,
+ });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 1,
+ });
+
+ const result = await getNextChapter(novelId, 0, '1');
+
+ expect(result).toBeDefined();
+ expect(result?.position).toBe(1);
+ });
+
+ it('should return next chapter from next page', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 0,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ page: '2',
+ position: 0,
+ });
+
+ const result = await getNextChapter(novelId, 0, '1');
+
+ expect(result?.id).toBe(chapterId2);
+ });
+ it('should return next chapter from the same page and not the next one', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 0,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 1,
+ });
+ await insertTestChapter(testDb, novelId, {
+ page: '2',
+ position: 0,
+ });
+
+ const result = await getNextChapter(novelId, 0, '1');
+
+ expect(result?.id).toBe(chapterId2);
+ });
+ it('should return next chapter from the same page and not the 10th one', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ page: '1',
+ position: 0,
+ });
+ const chapterId2 = await insertTestChapter(testDb, novelId, {
+ page: '2',
+ position: 0,
+ });
+ await insertTestChapter(testDb, novelId, {
+ page: '10',
+ position: 0,
+ });
+
+ const result = await getNextChapter(novelId, 0, '1');
+
+ expect(result?.id).toBe(chapterId2);
+ });
+ });
+
+ describe('getDownloadedChapters', () => {
+ it('should return all downloaded chapters with novel info', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'test-plugin',
+ name: 'Test Novel',
+ });
+ await insertTestChapter(testDb, novelId, { isDownloaded: true });
+ await insertTestChapter(testDb, novelId, { isDownloaded: false });
+
+ const result = await getDownloadedChapters();
+
+ expect(result.length).toBeGreaterThanOrEqual(1);
+ expect(result[0].isDownloaded).toBe(true);
+ expect(result[0].pluginId).toBe('test-plugin');
+ });
+ });
+
+ describe('getNovelDownloadedChapters', () => {
+ it('should return downloaded chapters for a novel', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ position: 0,
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: false,
+ position: 1,
+ });
+
+ const result = await getNovelDownloadedChapters(novelId);
+
+ expect(result).toHaveLength(1);
+ expect(result[0].isDownloaded).toBe(true);
+ });
+
+ it('should filter by position range', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ position: 0,
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ position: 1,
+ });
+ await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ position: 2,
+ });
+
+ const result = await getNovelDownloadedChapters(novelId, 0, 1);
+
+ expect(result.length).toBeLessThanOrEqual(2);
+ });
+ });
+
+ describe('getUpdatedOverviewFromDb', () => {
+ it('should return update overview grouped by novel and date', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ updatedTime: '2024-01-01 10:00:00',
+ });
+ await insertTestChapter(testDb, novelId, {
+ updatedTime: '2024-01-01 11:00:00',
+ });
+
+ const result = await getUpdatedOverviewFromDb();
+
+ expect(result.length).toBeGreaterThanOrEqual(1);
+ });
+ });
+
+ describe('getDetailedUpdatesFromDb', () => {
+ it('should return detailed updates for a novel', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ updatedTime: '2024-01-01',
+ });
+
+ const result = await getDetailedUpdatesFromDb(novelId);
+
+ expect(result.length).toBeGreaterThanOrEqual(1);
+ });
+
+ it('should filter by onlyDownloadableChapters', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, {
+ updatedTime: '2024-01-01',
+ isDownloaded: true,
+ });
+ await insertTestChapter(testDb, novelId, {
+ updatedTime: '2024-01-01',
+ isDownloaded: false,
+ });
+
+ const result = await getDetailedUpdatesFromDb(novelId, true);
+
+ expect(result.every(c => c.isDownloaded === true)).toBe(true);
+ });
+ });
+
+ describe('isChapterDownloaded', () => {
+ it('should return true for downloaded chapter', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ isDownloaded: true,
+ });
+
+ const result = isChapterDownloaded(chapterId);
+ expect(result).toBe(true);
+ });
+
+ it('should return false for non-downloaded chapter', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ isDownloaded: false,
+ });
+
+ const result = isChapterDownloaded(chapterId);
+ expect(result).toBe(false);
+ });
+ });
+});
diff --git a/src/database/queries/__tests__/HistoryQueries.test.ts b/src/database/queries/__tests__/HistoryQueries.test.ts
new file mode 100644
index 0000000000..76df083cbc
--- /dev/null
+++ b/src/database/queries/__tests__/HistoryQueries.test.ts
@@ -0,0 +1,122 @@
+/**
+ * Tests for HistoryQueries
+ *
+ * These tests use a real in-memory database to verify actual data returned by queries.
+ */
+
+import './mockDb';
+import { setupTestDatabase, getTestDb, teardownTestDatabase } from './setup';
+import { insertTestNovel, insertTestChapter, clearAllTables } from './testData';
+
+import {
+ getHistoryFromDb,
+ insertHistory,
+ deleteChapterHistory,
+ deleteAllHistory,
+} from '../HistoryQueries';
+
+describe('HistoryQueries', () => {
+ beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb);
+ });
+
+ afterAll(() => {
+ teardownTestDatabase();
+ });
+
+ describe('getHistoryFromDb', () => {
+ it('should return reading history grouped by novel', async () => {
+ const testDb = getTestDb();
+
+ const novelId1 = await insertTestNovel(testDb, { inLibrary: true });
+ const novelId2 = await insertTestNovel(testDb, { inLibrary: true });
+
+ const chapterId1 = await insertTestChapter(testDb, novelId1);
+ const chapterId2 = await insertTestChapter(testDb, novelId2);
+
+ await insertHistory(chapterId1);
+ await insertHistory(chapterId2);
+
+ const result = await getHistoryFromDb();
+
+ expect(result.length).toBeGreaterThanOrEqual(2);
+ const novelIds = result.map(h => h.novelId);
+ expect(novelIds).toContain(novelId1);
+ expect(novelIds).toContain(novelId2);
+ });
+
+ it('should return empty array when no history exists', async () => {
+ const result = await getHistoryFromDb();
+
+ expect(result).toEqual([]);
+ });
+
+ it('should only return chapters with readTime', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId1 = await insertTestChapter(testDb, novelId);
+ await insertTestChapter(testDb, novelId); // No readTime
+
+ await insertHistory(chapterId1);
+
+ const result = await getHistoryFromDb();
+
+ expect(result).toHaveLength(1);
+ expect(result[0].id).toBe(chapterId1);
+ });
+ });
+
+ describe('insertHistory', () => {
+ it('should set readTime to current time', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId, {
+ readTime: null,
+ });
+
+ await insertHistory(chapterId);
+
+ const history = await getHistoryFromDb();
+ const chapter = history.find(h => h.id === chapterId);
+ expect(chapter?.readTime).toBeDefined();
+ expect(chapter?.readTime).not.toBeNull();
+ });
+ });
+
+ describe('deleteChapterHistory', () => {
+ it('should remove chapter from history', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const chapterId = await insertTestChapter(testDb, novelId);
+
+ await insertHistory(chapterId);
+ await deleteChapterHistory(chapterId);
+
+ const history = await getHistoryFromDb();
+ expect(history.find(h => h.id === chapterId)).toBeUndefined();
+ });
+ });
+
+ describe('deleteAllHistory', () => {
+ it('should clear all reading history', async () => {
+ const testDb = getTestDb();
+
+ const novelId1 = await insertTestNovel(testDb, { inLibrary: true });
+ const novelId2 = await insertTestNovel(testDb, { inLibrary: true });
+
+ const chapterId1 = await insertTestChapter(testDb, novelId1);
+ const chapterId2 = await insertTestChapter(testDb, novelId2);
+
+ await insertHistory(chapterId1);
+ await insertHistory(chapterId2);
+ await deleteAllHistory();
+
+ const history = await getHistoryFromDb();
+ expect(history).toEqual([]);
+ });
+ });
+});
diff --git a/src/database/queries/__tests__/LibraryQueries.test.ts b/src/database/queries/__tests__/LibraryQueries.test.ts
new file mode 100644
index 0000000000..3f72e3f8f2
--- /dev/null
+++ b/src/database/queries/__tests__/LibraryQueries.test.ts
@@ -0,0 +1,537 @@
+import './mockDb';
+import {
+ clearAllTables,
+ insertTestNovel,
+ insertTestChapter,
+ insertTestNovelCategory,
+} from './testData';
+import {
+ getLibraryNovelsFromDb,
+ getLibraryWithCategory,
+} from '../LibraryQueries';
+import { TestDb } from './testDb';
+import { categorySchema } from '@database/schema';
+import { setupTestDatabase, teardownTestDatabase } from './setup';
+
+describe('LibraryQueries', () => {
+ let testDb: TestDb;
+
+ beforeEach(() => {
+ testDb = setupTestDatabase();
+ clearAllTables(testDb);
+ });
+ afterAll(() => {
+ teardownTestDatabase();
+ });
+
+ describe('getLibraryNovelsFromDb', () => {
+ it('should return all library novels with default filters', async () => {
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel A' });
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel B' });
+ await insertTestNovel(testDb, { inLibrary: false, name: 'Novel C' });
+
+ const novels = await getLibraryNovelsFromDb();
+ expect(novels).toHaveLength(2);
+ expect(novels.map(n => n.name)).toEqual(['Novel A', 'Novel B']);
+ });
+
+ it('should sort novels by name ascending', async () => {
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel B' });
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel A' });
+
+ const novels = await getLibraryNovelsFromDb('name ASC');
+ expect(novels.map(n => n.name)).toEqual(['Novel A', 'Novel B']);
+ });
+
+ it('should sort novels by name descending', async () => {
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel B' });
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel A' });
+
+ const novels = await getLibraryNovelsFromDb('name DESC');
+ expect(novels.map(n => n.name)).toEqual(['Novel B', 'Novel A']);
+ });
+
+ it('should filter novels by raw SQL filter', async () => {
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel A',
+ author: 'Author One',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel B',
+ author: 'Author Two',
+ });
+
+ const novels = await getLibraryNovelsFromDb(
+ undefined,
+ "author = 'Author One'",
+ );
+ expect(novels).toHaveLength(1);
+ expect(novels[0].name).toBe('Novel A');
+ });
+
+ it('should filter by search text', async () => {
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'The Great Novel',
+ });
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Another Story' });
+
+ const novels = await getLibraryNovelsFromDb(
+ undefined,
+ undefined,
+ 'Great',
+ );
+ expect(novels).toHaveLength(1);
+ expect(novels[0].name).toBe('The Great Novel');
+ });
+
+ it('should filter by downloadedOnlyMode', async () => {
+ const novelAId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel A',
+ isLocal: false,
+ });
+ await insertTestChapter(testDb, novelAId, { isDownloaded: true });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel B',
+ isLocal: true,
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel C',
+ isLocal: false,
+ }); // Not downloaded
+
+ const novels = await getLibraryNovelsFromDb(
+ undefined,
+ undefined,
+ undefined,
+ true,
+ );
+ expect(novels).toHaveLength(2);
+ expect(novels.map(n => n.name)).toEqual(['Novel A', 'Novel B']);
+ });
+
+ it('should filter by excludeLocalNovels', async () => {
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel A',
+ isLocal: true,
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel B',
+ isLocal: false,
+ });
+
+ const novels = await getLibraryNovelsFromDb(
+ undefined,
+ undefined,
+ undefined,
+ undefined,
+ true,
+ );
+ expect(novels).toHaveLength(1);
+ expect(novels[0].name).toBe('Novel B');
+ });
+
+ it('should combine all filters (sort, search, downloaded only, exclude local)', async () => {
+ // Setup: Insert multiple novels with varying properties
+ const novel1Id = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'The Great Local Novel',
+ author: 'Author One',
+ isLocal: true,
+ });
+ await insertTestChapter(testDb, novel1Id, { isDownloaded: true });
+
+ const novel2Id = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'A Good Remote Story',
+ author: 'Author Two',
+ isLocal: false,
+ });
+ await insertTestChapter(testDb, novel2Id, { isDownloaded: true });
+
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Another Remote Novel',
+ author: 'Author Three',
+ isLocal: false,
+ });
+
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Downloaded Local Book',
+ author: 'Author One',
+ isLocal: false,
+ }); // No chapters, so chaptersDownloaded is 0
+
+ // Test Case 1: All filters combined, expecting specific result
+ const novels1 = await getLibraryNovelsFromDb(
+ 'name ASC', // sortOrder
+ "author = 'Author Two'", // filter
+ 'Remote', // searchText
+ true, // downloadedOnlyMode
+ true, // excludeLocalNovels
+ );
+ expect(novels1).toHaveLength(1);
+ expect(novels1[0].name).toBe('A Good Remote Story');
+
+ // Test Case 2: Different combination, expecting a different result
+ // Looking for local, downloaded novels by Author One, sorted by name DESC
+ const novel3Id = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'An Old Local Story',
+ author: 'Author One',
+ isLocal: true,
+ });
+ await insertTestChapter(testDb, novel3Id, { isDownloaded: true });
+
+ const novels2 = await getLibraryNovelsFromDb(
+ 'name DESC',
+ "author = 'Author One'",
+ 'Local',
+ true,
+ false, // Include local novels
+ );
+
+ // We expect 'The Great Local Novel' and 'An Old Local Story'
+ // Both are local, by Author One, and have downloaded chapters.
+ // Sorted DESC, so 'The Great Local Novel' comes first.
+ expect(
+ novels2.map(n => ({
+ name: n.name,
+ isLocal: n.isLocal,
+ chaptersDownloaded: n.chaptersDownloaded,
+ })),
+ ).toHaveLength(2);
+ expect(novels2.map(n => n.name)).toEqual([
+ 'The Great Local Novel',
+ 'An Old Local Story',
+ ]);
+
+ // Test Case 3: Combination leading to empty results
+ const novels3 = await getLibraryNovelsFromDb(
+ 'name ASC',
+ "author = 'NonExistent'",
+ 'Novel',
+ false,
+ false,
+ );
+ expect(novels3).toHaveLength(0);
+ });
+
+ it('should return empty array if no novels match filters', async () => {
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel A' });
+
+ const novels = await getLibraryNovelsFromDb(
+ undefined,
+ "author = 'NonExistent'",
+ );
+ expect(novels).toHaveLength(0);
+ });
+
+ it('should return empty array if no novels in library', async () => {
+ await insertTestNovel(testDb, { inLibrary: false, name: 'Novel A' });
+
+ const novels = await getLibraryNovelsFromDb();
+ expect(novels).toHaveLength(0);
+ });
+ });
+
+ describe('getLibraryWithCategory', () => {
+ it('should return novels in a specific category', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 2',
+ });
+ const novelId3 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 3',
+ });
+
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+ const categoryId2 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category B' })
+ .returning()
+ .get().id;
+
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId2, categoryId1);
+ await insertTestNovelCategory(testDb, novelId3, categoryId2);
+
+ const novels = await getLibraryWithCategory(categoryId1);
+ expect(novels).toHaveLength(2);
+ expect(novels.map(n => n.name).sort()).toEqual(['Novel 1', 'Novel 2']);
+ });
+
+ it('should return novels only if in library', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: false,
+ name: 'Novel 2',
+ });
+
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId2, categoryId1);
+
+ const novels = await getLibraryWithCategory(categoryId1);
+ expect(novels).toHaveLength(1);
+ expect(novels[0].name).toBe('Novel 1');
+ });
+
+ it('should return empty array if category has no novels', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ });
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+ const categoryId2 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category B' })
+ .returning()
+ .get().id;
+
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+
+ const novels = await getLibraryWithCategory(categoryId2);
+ expect(novels).toHaveLength(0);
+ });
+
+ it('should return empty array if no novels match category or other filters', async () => {
+ // Insert novels, but none matching a specific category or filters
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel 1' });
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Novel 2' });
+
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+
+ // No novel-category associations made for categoryId1
+
+ const novels = await getLibraryWithCategory(categoryId1);
+ expect(novels).toHaveLength(0);
+ });
+
+ it('should return empty array if initial category ID query returns no idRows', async () => {
+ // No novels or categories inserted, or a non-existent category ID
+ const novels = await getLibraryWithCategory(999); // Non-existent category
+ expect(novels).toHaveLength(0);
+ });
+
+ it('should filter by onlyUpdateOngoingNovels = true', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ status: 'Ongoing',
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 2',
+ status: 'Completed',
+ });
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId2, categoryId1);
+
+ const novels = await getLibraryWithCategory(categoryId1, true);
+ expect(novels).toHaveLength(1);
+ expect(novels[0].name).toBe('Novel 1');
+ });
+
+ it('should not filter by onlyUpdateOngoingNovels = false', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ status: 'Ongoing',
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 2',
+ status: 'Completed',
+ });
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId2, categoryId1);
+
+ const novels = await getLibraryWithCategory(categoryId1, false);
+ expect(novels).toHaveLength(2);
+ expect(novels.map(n => n.name).sort()).toEqual(['Novel 1', 'Novel 2']);
+ });
+
+ it('should filter by excludeLocalNovels = true', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ isLocal: true,
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 2',
+ isLocal: false,
+ });
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId2, categoryId1);
+
+ const novels = await getLibraryWithCategory(categoryId1, undefined, true);
+ expect(novels).toHaveLength(1);
+ expect(novels[0].name).toBe('Novel 2');
+ });
+
+ it('should not filter by excludeLocalNovels = false', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ isLocal: true,
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 2',
+ isLocal: false,
+ });
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId2, categoryId1);
+
+ const novels = await getLibraryWithCategory(
+ categoryId1,
+ undefined,
+ false,
+ );
+ expect(novels).toHaveLength(2);
+ expect(novels.map(n => n.name).sort()).toEqual(['Novel 1', 'Novel 2']);
+ });
+
+ it('should handle novels belonging to multiple categories', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 2',
+ });
+
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+ const categoryId2 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category B' })
+ .returning()
+ .get().id;
+
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId1, categoryId2); // Novel 1 in two categories
+ await insertTestNovelCategory(testDb, novelId2, categoryId2);
+
+ const novelsCat1 = await getLibraryWithCategory(categoryId1);
+ expect(novelsCat1).toHaveLength(1);
+ expect(novelsCat1[0].name).toBe('Novel 1');
+
+ const novelsCat2 = await getLibraryWithCategory(categoryId2);
+ expect(novelsCat2).toHaveLength(2);
+ expect(novelsCat2.map(n => n.name).sort()).toEqual([
+ 'Novel 1',
+ 'Novel 2',
+ ]);
+ });
+
+ it('should return all library novels if categoryId is null', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 2',
+ });
+ await insertTestNovel(testDb, { inLibrary: false, name: 'Novel 3' });
+
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId2, categoryId1);
+
+ const novels = await getLibraryWithCategory(null);
+ expect(novels).toHaveLength(2);
+ expect(novels.map(n => n.name).sort()).toEqual(['Novel 1', 'Novel 2']);
+ });
+
+ it('should return all library novels if categoryId is undefined', async () => {
+ const novelId1 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 1',
+ });
+ const novelId2 = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Novel 2',
+ });
+ await insertTestNovel(testDb, { inLibrary: false, name: 'Novel 3' });
+
+ const categoryId1 = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Category A' })
+ .returning()
+ .get().id;
+
+ await insertTestNovelCategory(testDb, novelId1, categoryId1);
+ await insertTestNovelCategory(testDb, novelId2, categoryId1);
+
+ const novels = await getLibraryWithCategory(undefined);
+ expect(novels).toHaveLength(2);
+ expect(novels.map(n => n.name).sort()).toEqual(['Novel 1', 'Novel 2']);
+ });
+ });
+});
diff --git a/src/database/queries/__tests__/NovelQueries.test.ts b/src/database/queries/__tests__/NovelQueries.test.ts
new file mode 100644
index 0000000000..c1c3955be2
--- /dev/null
+++ b/src/database/queries/__tests__/NovelQueries.test.ts
@@ -0,0 +1,448 @@
+/**
+ * Tests for NovelQueries
+ *
+ * These tests use a real in-memory database to verify actual data returned by queries.
+ */
+
+import './mockDb';
+import { setupTestDatabase, getTestDb, teardownTestDatabase } from './setup';
+import {
+ insertTestNovel,
+ insertTestNovelCategory,
+ clearAllTables,
+} from './testData';
+import { categorySchema, novelCategorySchema } from '@database/schema';
+import { eq, sql } from 'drizzle-orm';
+
+import {
+ getAllNovels,
+ getNovelById,
+ getNovelByPath,
+ insertNovelAndChapters,
+ switchNovelToLibraryQuery,
+ removeNovelsFromLibrary,
+ getCachedNovels,
+ deleteCachedNovels,
+ restoreLibrary,
+ updateNovelInfo,
+ pickCustomNovelCover,
+ updateNovelCategoryById,
+ updateNovelCategories,
+} from '../NovelQueries';
+
+describe('NovelQueries', () => {
+ beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb);
+ });
+
+ afterAll(() => {
+ teardownTestDatabase();
+ });
+
+ describe('getAllNovels', () => {
+ it('should return all novels', async () => {
+ const testDb = getTestDb();
+
+ await insertTestNovel(testDb, { name: 'Novel 1' });
+ await insertTestNovel(testDb, { name: 'Novel 2' });
+
+ const result = await getAllNovels();
+
+ expect(result.length).toBeGreaterThanOrEqual(2);
+ expect(result.map(n => n.name)).toContain('Novel 1');
+ expect(result.map(n => n.name)).toContain('Novel 2');
+ });
+ });
+
+ describe('getNovelById', () => {
+ it('should return novel by ID', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { name: 'Test Novel' });
+
+ const result = await getNovelById(novelId);
+
+ expect(result).toBeDefined();
+ expect(result?.name).toBe('Test Novel');
+ });
+
+ it('should return undefined when novel not found', async () => {
+ const result = await getNovelById(999);
+
+ expect(result).toBeUndefined();
+ });
+ });
+
+ describe('getNovelByPath', () => {
+ it('should return novel by path and pluginId', async () => {
+ const testDb = getTestDb();
+
+ const path = '/test/novel';
+ const pluginId = 'test-plugin';
+ await insertTestNovel(testDb, { path, pluginId, name: 'Test Novel' });
+
+ const result = getNovelByPath(path, pluginId);
+
+ expect(result).toBeDefined();
+ expect(result?.name).toBe('Test Novel');
+ });
+
+ it('should return undefined when novel not found', () => {
+ const result = getNovelByPath('/nonexistent', 'test-plugin');
+
+ expect(result).toBeUndefined();
+ });
+ });
+
+ describe('insertNovelAndChapters', () => {
+ it('should insert novel and chapters', async () => {
+ const sourceNovel = {
+ id: undefined,
+ path: '/test/novel',
+ name: 'Test Novel',
+ chapters: [
+ {
+ path: '/chapter/1',
+ name: 'Chapter 1',
+ page: '1',
+ },
+ ],
+ };
+
+ const novelId = await insertNovelAndChapters('test-plugin', sourceNovel);
+
+ expect(novelId).toBeDefined();
+ const novel = await getNovelById(novelId!);
+ expect(novel?.name).toBe('Test Novel');
+ });
+
+ it('should handle conflict (onConflictDoNothing)', async () => {
+ const sourceNovel = {
+ id: undefined,
+ path: '/test/novel',
+ name: 'Test Novel',
+ chapters: [],
+ };
+
+ await insertNovelAndChapters('test-plugin', sourceNovel);
+ const novelId2 = await insertNovelAndChapters('test-plugin', sourceNovel);
+
+ // Second insert should return undefined due to conflict
+ expect(novelId2).toBeUndefined();
+ });
+ });
+
+ describe('switchNovelToLibraryQuery', () => {
+ it('should add novel to library when novel exists', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: false,
+ path: '/test/novel',
+ pluginId: 'test-plugin',
+ });
+
+ const result = await switchNovelToLibraryQuery(
+ '/test/novel',
+ 'test-plugin',
+ );
+
+ expect(result?.inLibrary).toBe(true);
+ const novel = await getNovelById(novelId);
+ expect(novel?.inLibrary).toBe(true);
+ });
+
+ it('should remove novel from library', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ path: '/test/novel',
+ pluginId: 'test-plugin',
+ });
+
+ const result = await switchNovelToLibraryQuery(
+ '/test/novel',
+ 'test-plugin',
+ );
+
+ expect(result?.inLibrary).toBe(false);
+ const novel = await getNovelById(novelId);
+ expect(novel?.inLibrary).toBe(false);
+ });
+
+ it('should assign default category when adding to library', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: false,
+ path: '/test/novel',
+ pluginId: 'test-plugin',
+ });
+
+ // Get default category (sort = 1)
+ const defaultCategory = await testDb.drizzleDb
+ .select()
+ .from(categorySchema)
+ .where(sql`${categorySchema.sort} = 1`)
+ .get();
+
+ await switchNovelToLibraryQuery('/test/novel', 'test-plugin');
+
+ const associations = await testDb.drizzleDb
+ .select()
+ .from(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novelId))
+ .all();
+
+ expect(associations.length).toBeGreaterThan(0);
+
+ expect(
+ associations.some(a => a.categoryId === (defaultCategory?.id ?? -1)),
+ ).toBe(!!defaultCategory);
+ });
+ });
+
+ describe('removeNovelsFromLibrary', () => {
+ it('should remove multiple novels from library', async () => {
+ const testDb = getTestDb();
+ const novelId1 = await insertTestNovel(testDb, { inLibrary: true });
+ const novelId2 = await insertTestNovel(testDb, { inLibrary: true });
+
+ await removeNovelsFromLibrary([novelId1, novelId2]);
+
+ const novel1 = await getNovelById(novelId1);
+ const novel2 = await getNovelById(novelId2);
+ expect(novel1?.inLibrary).toBe(false);
+ expect(novel2?.inLibrary).toBe(false);
+ });
+
+ it('should handle empty array', async () => {
+ await expect(removeNovelsFromLibrary([])).resolves.not.toThrow();
+ });
+
+ it('should clean up categories when removing from library', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const categoryId = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Test Category' })
+ .returning()
+ .get().id;
+ await insertTestNovelCategory(testDb, novelId, categoryId);
+
+ await removeNovelsFromLibrary([novelId]);
+
+ const associations = await testDb.drizzleDb
+ .select()
+ .from(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novelId))
+ .all();
+
+ expect(associations).toHaveLength(0);
+ });
+ });
+
+ describe('getCachedNovels', () => {
+ it('should return only novels not in library', async () => {
+ const testDb = getTestDb();
+ await insertTestNovel(testDb, { inLibrary: false, name: 'Cached Novel' });
+ await insertTestNovel(testDb, { inLibrary: true, name: 'Library Novel' });
+
+ const result = await getCachedNovels();
+
+ expect(result.every(n => n.inLibrary === false)).toBe(true);
+ expect(result.some(n => n.name === 'Cached Novel')).toBe(true);
+ });
+
+ it('should return empty array when no cached novels', async () => {
+ const testDb = getTestDb();
+ await insertTestNovel(testDb, { inLibrary: true });
+
+ const result = await getCachedNovels();
+
+ expect(result).toHaveLength(0);
+ });
+ });
+
+ describe('deleteCachedNovels', () => {
+ it('should delete all cached novels', async () => {
+ await insertTestNovel(getTestDb(), { inLibrary: false });
+ await insertTestNovel(getTestDb(), { inLibrary: false });
+ await insertTestNovel(getTestDb(), { inLibrary: true });
+
+ await deleteCachedNovels();
+
+ const cached = await getCachedNovels();
+ expect(cached).toHaveLength(0);
+ const all = await getAllNovels();
+ expect(all.length).toBe(1); // Only library novel remains
+ });
+ });
+
+ describe('restoreLibrary', () => {
+ it('should restore novel from backup', async () => {
+ const novel = {
+ id: 999,
+ path: '/test/novel',
+ pluginId: 'test-plugin',
+ name: 'Restored Novel',
+ cover: null,
+ summary: null,
+ author: null,
+ artist: null,
+ status: 'Ongoing',
+ genres: null,
+ inLibrary: true,
+ isLocal: false,
+ totalPages: 1,
+ chaptersDownloaded: 0,
+ chaptersUnread: 0,
+ totalChapters: 0,
+ lastReadAt: null,
+ lastUpdatedAt: null,
+ };
+
+ // Mock fetchNovel to return a valid SourceNovel
+ const { fetchNovel } = require('@services/plugin/fetch');
+ jest.mocked(fetchNovel).mockResolvedValueOnce({
+ id: undefined,
+ path: '/test/novel',
+ name: 'Restored Novel',
+ chapters: [],
+ });
+
+ await restoreLibrary(novel);
+
+ const restored = await getNovelByPath('/test/novel', 'test-plugin');
+ expect(restored?.name).toBe('Restored Novel');
+ });
+ });
+
+ describe('updateNovelInfo', () => {
+ it('should update novel information', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, {
+ name: 'Old Name',
+ author: 'Old Author',
+ });
+
+ const updatedInfo = {
+ id: novelId,
+ name: 'New Name',
+ author: 'New Author',
+ cover: 'new-cover.png',
+ path: '/test/novel',
+ pluginId: 'test-plugin',
+ summary: 'New summary',
+ artist: 'New Artist',
+ genres: 'Fantasy',
+ status: 'Ongoing',
+ isLocal: false,
+ inLibrary: true,
+ totalPages: 1,
+ chaptersDownloaded: 0,
+ chaptersUnread: 0,
+ totalChapters: 0,
+ lastReadAt: null,
+ lastUpdatedAt: null,
+ };
+
+ await updateNovelInfo(updatedInfo);
+
+ const novel = await getNovelById(novelId);
+ expect(novel?.name).toBe('New Name');
+ expect(novel?.author).toBe('New Author');
+ });
+ });
+
+ describe('pickCustomNovelCover', () => {
+ it('should handle canceled pick', async () => {
+ const novelId = await insertTestNovel(getTestDb(), {
+ name: 'Test Novel',
+ });
+ const novel = await getNovelById(novelId);
+
+ // Mock DocumentPicker to return canceled
+ const DocumentPicker = require('expo-document-picker');
+ jest.mocked(DocumentPicker.getDocumentAsync).mockResolvedValueOnce({
+ canceled: true,
+ assets: null,
+ });
+
+ const result = await pickCustomNovelCover(novel!);
+
+ // When canceled, should return undefined
+ expect(result).toBeUndefined();
+ });
+ });
+
+ describe('updateNovelCategoryById', () => {
+ it('should add categories to a novel', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ const categoryId = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Test Category' })
+ .returning()
+ .get().id;
+
+ await updateNovelCategoryById(novelId, [categoryId]);
+
+ const associations = await testDb.drizzleDb
+ .select()
+ .from(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novelId))
+ .all();
+
+ expect(associations.some(a => a.categoryId === categoryId)).toBe(true);
+ });
+ });
+
+ describe('updateNovelCategories', () => {
+ it('should update categories for multiple novels', async () => {
+ const testDb = getTestDb();
+ const novelId1 = await insertTestNovel(testDb, { inLibrary: true });
+ const novelId2 = await insertTestNovel(testDb, { inLibrary: true });
+ const categoryId = await testDb.drizzleDb
+ .insert(categorySchema)
+ .values({ name: 'Test Category' })
+ .returning()
+ .get().id;
+
+ await updateNovelCategories([novelId1, novelId2], [categoryId]);
+
+ const associations1 = await testDb.drizzleDb
+ .select()
+ .from(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novelId1))
+ .all();
+ const associations2 = await testDb.drizzleDb
+ .select()
+ .from(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novelId2))
+ .all();
+
+ expect(associations1.some(a => a.categoryId === categoryId)).toBe(true);
+ expect(associations2.some(a => a.categoryId === categoryId)).toBe(true);
+ });
+
+ it('should handle empty novel IDs array', async () => {
+ await expect(updateNovelCategories([], [1])).resolves.not.toThrow();
+ });
+
+ it('should assign default category when no categories provided', async () => {
+ const testDb = getTestDb();
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await updateNovelCategories([novelId], []);
+
+ const associations = await testDb.drizzleDb
+ .select()
+ .from(novelCategorySchema)
+ .where(eq(novelCategorySchema.novelId, novelId))
+ .all();
+
+ // Should have at least one category (default)
+ expect(associations.length).toBeGreaterThan(0);
+ });
+ });
+});
diff --git a/src/database/queries/__tests__/README.md b/src/database/queries/__tests__/README.md
new file mode 100644
index 0000000000..30d49905a5
--- /dev/null
+++ b/src/database/queries/__tests__/README.md
@@ -0,0 +1,297 @@
+# Database Queries Test Suite
+
+This directory contains tests for all database query modules in the LNReader application. Tests use a real in-memory SQLite database to verify actual data returned by queries.
+
+## Test Files
+
+| File | Description |
+| --------------------------- | ------------------------------------------------- |
+| `CategoryQueries.test.ts` | Tests for category CRUD operations |
+| `ChapterQueries.test.ts` | Tests for chapter management and reading progress |
+| `HistoryQueries.test.ts` | Tests for reading history tracking |
+| `LibraryQueries.test.ts` | Tests for library novel retrieval and filtering |
+| `NovelQueries.test.ts` | Tests for novel CRUD and library management |
+| `RepositoryQueries.test.ts` | Tests for plugin repository management |
+| `StatsQueries.test.ts` | Tests for library statistics |
+| `setup.ts` | Test setup with real database |
+| `testDb.ts` | Test database factory (better-sqlite3) |
+| `testData.ts` | Test data insertion utilities |
+
+## Running Tests
+
+```bash
+# Run all tests
+pnpm test
+
+# Run tests in watch mode
+pnpm test:watch
+
+# Run tests with coverage report
+pnpm test:coverage
+
+# Run only database query tests
+pnpm test:queries
+```
+
+## Test Setup
+
+The test suite uses **better-sqlite3** with an in-memory database to execute real queries. This ensures tests verify actual data correctness, not just function calls.
+
+### Async mismatch detection
+
+The test dbManager intentionally wraps Drizzle query builders so `.get()` and `.all()` behave like op-sqlite (async). If any query function treats these results synchronously (e.g. `const result = query.get(); return !!result;`), the tests will fail and should be fixed by making the query function async-safe.
+
+### Test Database Factory
+
+The `testDb.ts` file provides:
+
+- `createTestDb()` - Creates a fresh in-memory SQLite database with schema and migrations
+- `cleanupTestDb()` - Properly closes the database
+- `getTestDbManager()` - Gets the dbManager instance for the test database
+
+### Test Data Utilities
+
+The `testData.ts` file provides helper functions to insert test data:
+
+```typescript
+import { insertTestNovel, insertTestChapter, clearAllTables } from './testData';
+
+// Insert a novel
+const novelId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ name: 'Test Novel',
+ pluginId: 'test-plugin',
+});
+
+// Insert a chapter
+const chapterId = await insertTestChapter(testDb, novelId, {
+ name: 'Chapter 1',
+ unread: true,
+});
+
+// Clear all tables between tests
+clearAllTables(testDb);
+```
+
+Available utilities:
+
+- `insertTestNovel()` - Insert a novel
+- `insertTestChapter()` - Insert a chapter
+- `insertTestCategory()` - Insert a category
+- `insertTestRepository()` - Insert a repository
+- `insertTestNovelCategory()` - Link novel to category
+- `insertTestNovelWithChapters()` - Insert novel with chapters
+- `seedTestData()` - Bulk insert test data
+- `clearAllTables()` - Clean database between tests
+
+## Writing New Tests
+
+### Basic Test Structure
+
+```typescript
+import { setupTestDatabase, getTestDb, teardownTestDatabase } from './setup';
+import { insertTestNovel, clearAllTables } from './testData';
+import { getLibraryStatsFromDb } from '../StatsQueries';
+
+describe('StatsQueries', () => {
+ beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb);
+ });
+
+ afterAll(() => {
+ teardownTestDatabase();
+ });
+
+ describe('getLibraryStatsFromDb', () => {
+ it('should return correct novel and source counts', async () => {
+ const testDb = getTestDb();
+
+ // Insert test data
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'source1',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'source2',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: false, // Not in library
+ });
+
+ // Execute query
+ const result = await getLibraryStatsFromDb();
+
+ // Verify actual data
+ expect(result.novelsCount).toBe(2);
+ expect(result.sourcesCount).toBe(2);
+ });
+ });
+});
+```
+
+### Test Isolation
+
+Each test file should:
+
+1. Call `setupTestDatabase()` in `beforeEach` to create a fresh database
+2. Call `clearAllTables()` if needed to clean up data between tests
+3. Call `teardownTestDatabase()` in `afterAll` (handled automatically by setup.ts)
+
+### Testing Write Operations
+
+```typescript
+it('should create a repository', async () => {
+ const result = await createRepository('https://example.com/repo');
+
+ // Verify the data was actually inserted
+ expect(result).toBeDefined();
+ expect(result.url).toBe('https://example.com/repo');
+ expect(result.id).toBeGreaterThan(0);
+
+ // Verify it can be retrieved
+ const repositories = await getRepositoriesFromDb();
+ expect(repositories).toContainEqual(
+ expect.objectContaining({ url: 'https://example.com/repo' }),
+ );
+});
+```
+
+### Testing with Relationships
+
+```typescript
+it('should return chapters for a novel', async () => {
+ const testDb = getTestDb();
+
+ // Create novel
+ const novelId = await insertTestNovel(testDb, {
+ inLibrary: true,
+ });
+
+ // Create chapters
+ await insertTestChapter(testDb, novelId, { name: 'Chapter 1' });
+ await insertTestChapter(testDb, novelId, { name: 'Chapter 2' });
+
+ // Query
+ const chapters = await getNovelChapters(novelId);
+
+ // Verify data
+ expect(chapters).toHaveLength(2);
+ expect(chapters.map(c => c.name)).toEqual(['Chapter 1', 'Chapter 2']);
+});
+```
+
+## Key Principles
+
+1. **Test actual data, not function calls** - Verify the data returned by queries is correct
+2. **Use real database** - Tests run against a real in-memory SQLite database
+3. **Test isolation** - Each test gets a fresh database or cleaned tables
+4. **Focus on correctness** - Verify queries return expected data for given inputs
+
+## Mocked Dependencies
+
+The setup automatically mocks external dependencies that aren't database-related:
+
+- `@utils/showToast` - Toast notifications
+- `@strings/translations` - i18n translations
+- `@specs/NativeFile` - Native file system operations
+- `@plugins/helpers/fetch` - Download utilities
+- `@services/plugin/fetch` - Novel fetching service
+- `expo-document-picker` - Document picker
+
+The `@database/db` module is mocked to use the test database instead of the production database.
+
+## Query Modules Tested
+
+### StatsQueries
+
+- `getLibraryStatsFromDb` - Novel and source counts
+- `getChaptersTotalCountFromDb` - Total chapter count
+- `getChaptersReadCountFromDb` - Read chapter count
+- `getChaptersUnreadCountFromDb` - Unread chapter count
+- `getChaptersDownloadedCountFromDb` - Downloaded chapter count
+- `getNovelGenresFromDb` - Genre distribution
+- `getNovelStatusFromDb` - Status distribution
+
+### RepositoryQueries
+
+- `getRepositoriesFromDb` - Get all repositories
+- `isRepoUrlDuplicated` - Check for duplicate URLs
+- `createRepository` - Create repository
+- `deleteRepositoryById` - Delete repository
+- `updateRepository` - Update repository URL
+
+### CategoryQueries
+
+- `getCategoriesFromDb` - Get all categories with novel IDs
+- `createCategory` - Create a new category
+- `isCategoryNameDuplicate` - Check for duplicate names
+- `updateCategory` - Update category name
+
+### LibraryQueries
+
+- `getLibraryNovelsFromDb` - Get library novels with filters
+- `getLibraryWithCategory` - Get novels by category
+
+### ChapterQueries
+
+- `markChapterRead` - Mark chapter as read
+- `markChapterUnread` - Mark chapter as unread
+- `bookmarkChapter` - Bookmark a chapter
+- `getNovelChapters` - Get chapters for a novel
+
+### NovelQueries
+
+- `getAllNovels` - Get all novels
+- `getNovelById` - Get novel by ID
+- `getNovelByPath` - Get novel by path and pluginId
+
+### HistoryQueries
+
+- `getHistoryFromDb` - Get reading history
+- `insertHistory` - Add to reading history
+- `deleteChapterHistory` - Remove chapter from history
+- `deleteAllHistory` - Clear all history
+
+## Troubleshooting
+
+### Tests fail with "Test database not initialized"
+
+Ensure you call `setupTestDatabase()` in `beforeEach`:
+
+```typescript
+beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb);
+});
+```
+
+### Tests interfere with each other
+
+Make sure to call `clearAllTables()` in `beforeEach` or create a fresh database for each test:
+
+```typescript
+beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb); // Clean up data
+});
+```
+
+### Migration errors
+
+The test database automatically runs migrations. If you see migration errors, ensure the migration files in `drizzle/` are valid SQL.
+
+### better-sqlite3 native module issues
+
+If you see errors about better-sqlite3 not being found, ensure it's installed:
+
+```bash
+pnpm install
+```
+
+On some systems, you may need to rebuild native modules:
+
+```bash
+pnpm rebuild better-sqlite3
+```
diff --git a/src/database/queries/__tests__/RepositoryQueries.test.ts b/src/database/queries/__tests__/RepositoryQueries.test.ts
new file mode 100644
index 0000000000..025e078579
--- /dev/null
+++ b/src/database/queries/__tests__/RepositoryQueries.test.ts
@@ -0,0 +1,175 @@
+/**
+ * Tests for RepositoryQueries
+ *
+ * These tests use a real in-memory database to verify actual data returned by queries.
+ */
+
+import './mockDb';
+import { setupTestDatabase, getTestDb, teardownTestDatabase } from './setup';
+import { insertTestRepository, clearAllTables } from './testData';
+
+import {
+ getRepositoriesFromDb,
+ isRepoUrlDuplicated,
+ createRepository,
+ deleteRepositoryById,
+ updateRepository,
+} from '../RepositoryQueries';
+
+describe('RepositoryQueries', () => {
+ beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb);
+ });
+
+ afterAll(() => {
+ teardownTestDatabase();
+ });
+
+ describe('getRepositoriesFromDb', () => {
+ it('should return all repositories', async () => {
+ const testDb = getTestDb();
+
+ await insertTestRepository(testDb, {
+ url: 'https://repo1.example.com',
+ });
+ await insertTestRepository(testDb, {
+ url: 'https://repo2.example.com',
+ });
+ await insertTestRepository(testDb, {
+ url: 'https://repo3.example.com',
+ });
+
+ const result = await getRepositoriesFromDb();
+
+ expect(result).toHaveLength(3);
+ expect(result.map(r => r.url)).toEqual([
+ 'https://repo1.example.com',
+ 'https://repo2.example.com',
+ 'https://repo3.example.com',
+ ]);
+ });
+
+ it('should return empty array when no repositories exist', async () => {
+ const result = await getRepositoriesFromDb();
+
+ expect(result).toEqual([]);
+ });
+ });
+
+ describe('isRepoUrlDuplicated', () => {
+ it('should return true when URL already exists', async () => {
+ const testDb = getTestDb();
+
+ await insertTestRepository(testDb, { url: 'https://example.com/repo' });
+
+ const result = await isRepoUrlDuplicated('https://example.com/repo');
+
+ expect(result).toBe(true);
+ });
+
+ it('should return false when URL does not exist', async () => {
+ const testDb = getTestDb();
+
+ await insertTestRepository(testDb, { url: 'https://example.com/repo1' });
+
+ const result = await isRepoUrlDuplicated('https://example.com/repo2');
+
+ expect(result).toBe(false);
+ });
+
+ it('should be case-sensitive for URLs', async () => {
+ const testDb = getTestDb();
+
+ await insertTestRepository(testDb, { url: 'https://example.com/repo' });
+
+ const result = await isRepoUrlDuplicated('https://EXAMPLE.COM/repo');
+
+ expect(result).toBe(false);
+ });
+ });
+
+ describe('createRepository', () => {
+ it('should create a new repository and return it', async () => {
+ const result = await createRepository('https://example.com/repo');
+
+ expect(result).toBeDefined();
+ expect(result.url).toBe('https://example.com/repo');
+ expect(result.id).toBeGreaterThan(0);
+ });
+
+ it('should store the URL exactly as provided', async () => {
+ const url = 'https://example.com/repo/';
+ const result = await createRepository(url);
+
+ expect(result.url).toBe(url);
+ });
+
+ it('should handle URLs with query parameters', async () => {
+ const url = 'https://example.com/repo?branch=main&format=json';
+ const result = await createRepository(url);
+
+ expect(result.url).toBe(url);
+ });
+ });
+
+ describe('deleteRepositoryById', () => {
+ it('should delete repository by ID', async () => {
+ const testDb = getTestDb();
+
+ const id = await insertTestRepository(testDb, {
+ url: 'https://example.com/repo',
+ });
+
+ await deleteRepositoryById(id);
+
+ const repositories = await getRepositoriesFromDb();
+ expect(repositories).toHaveLength(0);
+ });
+
+ it('should handle deleting non-existent repository', async () => {
+ await expect(deleteRepositoryById(999)).resolves.not.toThrow();
+ });
+ });
+
+ describe('updateRepository', () => {
+ it('should update repository URL', async () => {
+ const testDb = getTestDb();
+
+ const id = await insertTestRepository(testDb, {
+ url: 'https://old-url.example.com',
+ });
+
+ await updateRepository(id, 'https://new-url.example.com');
+
+ const repositories = await getRepositoriesFromDb();
+ expect(repositories[0].url).toBe('https://new-url.example.com');
+ });
+
+ it('should update the correct repository by ID', async () => {
+ const testDb = getTestDb();
+
+ const id1 = await insertTestRepository(testDb, {
+ url: 'https://repo1.example.com',
+ });
+ const id2 = await insertTestRepository(testDb, {
+ url: 'https://repo2.example.com',
+ });
+
+ await updateRepository(id1, 'https://updated-repo1.example.com');
+
+ const repositories = await getRepositoriesFromDb();
+ const repo1 = repositories.find(r => r.id === id1);
+ const repo2 = repositories.find(r => r.id === id2);
+
+ expect(repo1?.url).toBe('https://updated-repo1.example.com');
+ expect(repo2?.url).toBe('https://repo2.example.com');
+ });
+
+ it('should handle updating non-existent repository', async () => {
+ await expect(
+ updateRepository(999, 'https://example.com'),
+ ).resolves.not.toThrow();
+ });
+ });
+});
diff --git a/src/database/queries/__tests__/StatsQueries.test.ts b/src/database/queries/__tests__/StatsQueries.test.ts
new file mode 100644
index 0000000000..aa53501b40
--- /dev/null
+++ b/src/database/queries/__tests__/StatsQueries.test.ts
@@ -0,0 +1,326 @@
+/**
+ * Tests for StatsQueries
+ *
+ * These tests use a real in-memory database to verify actual data returned by queries.
+ */
+
+import './mockDb';
+import { setupTestDatabase, getTestDb, teardownTestDatabase } from './setup';
+import { insertTestNovel, insertTestChapter, clearAllTables } from './testData';
+
+import {
+ getLibraryStatsFromDb,
+ getChaptersTotalCountFromDb,
+ getChaptersReadCountFromDb,
+ getChaptersUnreadCountFromDb,
+ getChaptersDownloadedCountFromDb,
+ getNovelGenresFromDb,
+ getNovelStatusFromDb,
+} from '../StatsQueries';
+
+describe('StatsQueries', () => {
+ beforeEach(() => {
+ const testDb = setupTestDatabase();
+ clearAllTables(testDb);
+ });
+
+ afterAll(() => {
+ teardownTestDatabase();
+ });
+
+ describe('getLibraryStatsFromDb', () => {
+ it('should return correct novel and source counts', async () => {
+ const testDb = getTestDb();
+
+ // Insert novels from different sources
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'source1',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'source1',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ pluginId: 'source2',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: false, // Not in library
+ });
+
+ const result = await getLibraryStatsFromDb();
+
+ expect(result.novelsCount).toBe(3);
+ expect(result.sourcesCount).toBe(2);
+ });
+
+ it('should return zero counts when library is empty', async () => {
+ const result = await getLibraryStatsFromDb();
+
+ expect(result.novelsCount).toBe(0);
+ expect(result.sourcesCount).toBe(0);
+ });
+
+ it('should only count novels in library', async () => {
+ const testDb = getTestDb();
+
+ await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestNovel(testDb, { inLibrary: false });
+ await insertTestNovel(testDb, { inLibrary: false });
+
+ const result = await getLibraryStatsFromDb();
+
+ expect(result.novelsCount).toBe(2);
+ });
+ });
+
+ describe('getChaptersTotalCountFromDb', () => {
+ it('should return correct total chapter count', async () => {
+ const testDb = getTestDb();
+
+ const novelId1 = await insertTestNovel(testDb, { inLibrary: true });
+ const novelId2 = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestNovel(testDb, { inLibrary: false }); // Not in library
+
+ await insertTestChapter(testDb, novelId1);
+ await insertTestChapter(testDb, novelId1);
+ await insertTestChapter(testDb, novelId2);
+ await insertTestChapter(testDb, novelId2);
+ await insertTestChapter(testDb, novelId2);
+
+ const result = await getChaptersTotalCountFromDb();
+
+ expect(result.chaptersCount).toBe(5);
+ });
+
+ it('should return zero when no chapters in library novels', async () => {
+ const testDb = getTestDb();
+
+ await insertTestNovel(testDb, { inLibrary: true });
+
+ const result = await getChaptersTotalCountFromDb();
+
+ expect(result.chaptersCount).toBe(0);
+ });
+
+ it('should only count chapters from library novels', async () => {
+ const testDb = getTestDb();
+
+ const libraryNovelId = await insertTestNovel(testDb, { inLibrary: true });
+ const nonLibraryNovelId = await insertTestNovel(testDb, {
+ inLibrary: false,
+ });
+
+ await insertTestChapter(testDb, libraryNovelId);
+ await insertTestChapter(testDb, libraryNovelId);
+ await insertTestChapter(testDb, nonLibraryNovelId);
+
+ const result = await getChaptersTotalCountFromDb();
+
+ expect(result.chaptersCount).toBe(2);
+ });
+ });
+
+ describe('getChaptersReadCountFromDb', () => {
+ it('should return correct count of read chapters', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await insertTestChapter(testDb, novelId, { unread: false }); // Read
+ await insertTestChapter(testDb, novelId, { unread: false }); // Read
+ await insertTestChapter(testDb, novelId, { unread: true }); // Unread
+
+ const result = await getChaptersReadCountFromDb();
+
+ expect(result.chaptersRead).toBe(2);
+ });
+
+ it('should return zero when no chapters are read', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { unread: true });
+
+ const result = await getChaptersReadCountFromDb();
+
+ expect(result.chaptersRead).toBe(0);
+ });
+
+ it('should only count chapters from library novels', async () => {
+ const testDb = getTestDb();
+
+ const libraryNovelId = await insertTestNovel(testDb, { inLibrary: true });
+ const nonLibraryNovelId = await insertTestNovel(testDb, {
+ inLibrary: false,
+ });
+
+ await insertTestChapter(testDb, libraryNovelId, { unread: false });
+ await insertTestChapter(testDb, nonLibraryNovelId, { unread: false });
+
+ const result = await getChaptersReadCountFromDb();
+
+ expect(result.chaptersRead).toBe(1);
+ });
+ });
+
+ describe('getChaptersUnreadCountFromDb', () => {
+ it('should return correct count of unread chapters', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await insertTestChapter(testDb, novelId, { unread: true }); // Unread
+ await insertTestChapter(testDb, novelId, { unread: true }); // Unread
+ await insertTestChapter(testDb, novelId, { unread: false }); // Read
+
+ const result = await getChaptersUnreadCountFromDb();
+
+ expect(result.chaptersUnread).toBe(2);
+ });
+
+ it('should return zero when all chapters are read', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { unread: false });
+
+ const result = await getChaptersUnreadCountFromDb();
+
+ expect(result.chaptersUnread).toBe(0);
+ });
+ });
+
+ describe('getChaptersDownloadedCountFromDb', () => {
+ it('should return correct count of downloaded chapters', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+
+ await insertTestChapter(testDb, novelId, { isDownloaded: true });
+ await insertTestChapter(testDb, novelId, { isDownloaded: true });
+ await insertTestChapter(testDb, novelId, { isDownloaded: false });
+
+ const result = await getChaptersDownloadedCountFromDb();
+
+ expect(result.chaptersDownloaded).toBe(2);
+ });
+
+ it('should return zero when no chapters are downloaded', async () => {
+ const testDb = getTestDb();
+
+ const novelId = await insertTestNovel(testDb, { inLibrary: true });
+ await insertTestChapter(testDb, novelId, { isDownloaded: false });
+
+ const result = await getChaptersDownloadedCountFromDb();
+
+ expect(result.chaptersDownloaded).toBe(0);
+ });
+ });
+
+ describe('getNovelGenresFromDb', () => {
+ it('should return correct genre distribution', async () => {
+ const testDb = getTestDb();
+
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ genres: 'Fantasy, Adventure',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ genres: 'Fantasy, Romance',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ genres: 'Sci-Fi',
+ });
+ await insertTestNovel(testDb, {
+ inLibrary: false,
+ genres: 'Horror', // Not in library
+ });
+
+ const result = await getNovelGenresFromDb();
+
+ expect(result.genres).toEqual({
+ Fantasy: 2,
+ Adventure: 1,
+ Romance: 1,
+ 'Sci-Fi': 1,
+ });
+ });
+
+ it('should return empty genres when no novels in library', async () => {
+ const result = await getNovelGenresFromDb();
+
+ expect(result.genres).toEqual({});
+ });
+
+ it('should handle novels with null genres', async () => {
+ const testDb = getTestDb();
+
+ await insertTestNovel(testDb, { inLibrary: true, genres: null });
+ await insertTestNovel(testDb, { inLibrary: true, genres: 'Fantasy' });
+
+ const result = await getNovelGenresFromDb();
+
+ expect(result.genres).toEqual({ Fantasy: 1 });
+ });
+
+ it('should handle genres with extra whitespace', async () => {
+ const testDb = getTestDb();
+
+ await insertTestNovel(testDb, {
+ inLibrary: true,
+ genres: 'Fantasy, Adventure, Action',
+ });
+
+ const result = await getNovelGenresFromDb();
+
+ expect(result.genres).toHaveProperty('Fantasy');
+ expect(result.genres).toHaveProperty('Adventure');
+ expect(result.genres).toHaveProperty('Action');
+ });
+ });
+
+ describe('getNovelStatusFromDb', () => {
+ it('should return correct status distribution', async () => {
+ const testDb = getTestDb();
+
+ await insertTestNovel(testDb, { inLibrary: true, status: 'Ongoing' });
+ await insertTestNovel(testDb, { inLibrary: true, status: 'Ongoing' });
+ await insertTestNovel(testDb, { inLibrary: true, status: 'Completed' });
+ await insertTestNovel(testDb, { inLibrary: true, status: 'Hiatus' });
+ await insertTestNovel(testDb, {
+ inLibrary: false,
+ status: 'Dropped', // Not in library
+ });
+
+ const result = await getNovelStatusFromDb();
+
+ expect(result.status).toEqual({
+ Ongoing: 2,
+ Completed: 1,
+ Hiatus: 1,
+ });
+ });
+
+ it('should return empty status when no novels in library', async () => {
+ const result = await getNovelStatusFromDb();
+
+ expect(result.status).toEqual({});
+ });
+
+ it('should handle novels with null status', async () => {
+ const testDb = getTestDb();
+
+ await insertTestNovel(testDb, { inLibrary: true, status: null });
+ await insertTestNovel(testDb, { inLibrary: true, status: 'Ongoing' });
+
+ const result = await getNovelStatusFromDb();
+
+ expect(result.status).toEqual({ Ongoing: 1 });
+ });
+ });
+});
diff --git a/src/database/queries/__tests__/index.ts b/src/database/queries/__tests__/index.ts
new file mode 100644
index 0000000000..d9ee4a99eb
--- /dev/null
+++ b/src/database/queries/__tests__/index.ts
@@ -0,0 +1,156 @@
+/**
+ * Database Query Tests
+ *
+ * This test suite covers all database query modules in the lnreader application.
+ * The queries are currently in a migration process from raw SQLite to Drizzle ORM,
+ * so some tests may not pass until the migration is complete.
+ *
+ * Test Files:
+ * - CategoryQueries.test.ts - Tests for category CRUD operations
+ * - ChapterQueries.test.ts - Tests for chapter management and reading progress
+ * - HistoryQueries.test.ts - Tests for reading history tracking
+ * - LibraryQueries.test.ts - Tests for library novel retrieval and filtering
+ * - NovelQueries.test.ts - Tests for novel CRUD and library management
+ * - RepositoryQueries.test.ts - Tests for plugin repository management
+ * - StatsQueries.test.ts - Tests for library statistics
+ *
+ * Running Tests:
+ * - `pnpm test` - Run all tests
+ * - `pnpm test:watch` - Run tests in watch mode
+ * - `pnpm test:coverage` - Run tests with coverage report
+ * - `pnpm test:queries` - Run only database query tests
+ *
+ * Test Setup:
+ * The setup.ts file provides:
+ * - Mock implementations for dbManager and database operations
+ * - Mock schemas for all database tables
+ * - Test fixtures for creating test data
+ * - Helper functions for resetting mocks between tests
+ *
+ * @module database/queries/__tests__
+ */
+
+// Export test utilities for external use
+export { setupTestDatabase, getTestDb, teardownTestDatabase } from './setup';
+export {
+ insertTestNovel,
+ insertTestChapter,
+ insertTestCategory,
+ insertTestRepository,
+ insertTestNovelCategory,
+ clearAllTables,
+ seedTestData,
+} from './testData';
+export { createTestDb, cleanupTestDb, getTestDbManager } from './testDb';
+
+// Test module descriptions for documentation purposes
+export const testModules = {
+ CategoryQueries: {
+ description: 'Category management operations',
+ functions: [
+ 'getCategoriesFromDb',
+ 'getCategoriesWithCount',
+ 'createCategory',
+ 'deleteCategoryById',
+ 'updateCategory',
+ 'isCategoryNameDuplicate',
+ 'updateCategoryOrderInDb',
+ 'getAllNovelCategories',
+ '_restoreCategory',
+ ],
+ },
+ ChapterQueries: {
+ description: 'Chapter management and reading progress',
+ functions: [
+ 'insertChapters',
+ 'markChapterRead',
+ 'markChaptersRead',
+ 'markChapterUnread',
+ 'markChaptersUnread',
+ 'markAllChaptersRead',
+ 'markAllChaptersUnread',
+ 'deleteChapter',
+ 'deleteChapters',
+ 'deleteDownloads',
+ 'deleteReadChaptersFromDb',
+ 'updateChapterProgress',
+ 'updateChapterProgressByIds',
+ 'bookmarkChapter',
+ 'markPreviuschaptersRead',
+ 'markPreviousChaptersUnread',
+ 'clearUpdates',
+ 'getCustomPages',
+ 'getNovelChapters',
+ 'getUnreadNovelChapters',
+ 'getAllUndownloadedChapters',
+ 'getAllUndownloadedAndUnreadChapters',
+ 'getChapter',
+ 'getPageChapters',
+ 'getChapterCount',
+ 'getPageChaptersBatched',
+ 'getPrevChapter',
+ 'getNextChapter',
+ 'getDownloadedChapters',
+ 'getNovelDownloadedChapters',
+ 'getUpdatedOverviewFromDb',
+ 'getDetailedUpdatesFromDb',
+ 'isChapterDownloaded',
+ ],
+ },
+ HistoryQueries: {
+ description: 'Reading history tracking',
+ functions: [
+ 'getHistoryFromDb',
+ 'insertHistory',
+ 'deleteChapterHistory',
+ 'deleteAllHistory',
+ ],
+ },
+ LibraryQueries: {
+ description: 'Library novel retrieval and filtering',
+ functions: ['getLibraryNovelsFromDb', 'getLibraryWithCategory'],
+ },
+ NovelQueries: {
+ description: 'Novel CRUD and library management',
+ functions: [
+ 'insertNovelAndChapters',
+ 'getAllNovels',
+ 'getNovelById',
+ 'getNovelByPath',
+ 'switchNovelToLibraryQuery',
+ 'removeNovelsFromLibrary',
+ 'getCachedNovels',
+ 'deleteCachedNovels',
+ 'restoreLibrary',
+ 'updateNovelInfo',
+ 'pickCustomNovelCover',
+ 'updateNovelCategoryById',
+ 'updateNovelCategories',
+ '_restoreNovelAndChapters',
+ ],
+ },
+ RepositoryQueries: {
+ description: 'Plugin repository management',
+ functions: [
+ 'getRepositoriesFromDb',
+ 'isRepoUrlDuplicated',
+ 'createRepository',
+ 'deleteRepositoryById',
+ 'updateRepository',
+ ],
+ },
+ StatsQueries: {
+ description: 'Library statistics',
+ functions: [
+ 'getLibraryStatsFromDb',
+ 'getChaptersTotalCountFromDb',
+ 'getChaptersReadCountFromDb',
+ 'getChaptersUnreadCountFromDb',
+ 'getChaptersDownloadedCountFromDb',
+ 'getNovelGenresFromDb',
+ 'getNovelStatusFromDb',
+ ],
+ },
+} as const;
+
+export type TestModuleName = keyof typeof testModules;
diff --git a/src/database/queries/__tests__/mockDb.ts b/src/database/queries/__tests__/mockDb.ts
new file mode 100644
index 0000000000..65a1e3a09f
--- /dev/null
+++ b/src/database/queries/__tests__/mockDb.ts
@@ -0,0 +1,19 @@
+const mockGetTestDb = () =>
+ (require('./setup') as typeof import('./setup')).getTestDb();
+
+// Mock @database/db to use our test database
+jest.mock('@database/db', () => {
+ return {
+ __esModule: true,
+ get db() {
+ return mockGetTestDb().sqlite;
+ },
+ get drizzleDb() {
+ return mockGetTestDb().drizzleDb;
+ },
+ get dbManager() {
+ return mockGetTestDb().dbManager;
+ },
+ useInitDatabase: jest.fn(),
+ };
+});
diff --git a/src/database/queries/__tests__/setup.ts b/src/database/queries/__tests__/setup.ts
new file mode 100644
index 0000000000..f7b88c8d06
--- /dev/null
+++ b/src/database/queries/__tests__/setup.ts
@@ -0,0 +1,155 @@
+/**
+ * Test setup file for database query tests
+ *
+ * This file sets up a real in-memory SQLite database for testing.
+ * Tests verify actual data returned by queries, not just function calls.
+ */
+
+// @ts-ignore
+global.__DEV__ ??= false;
+
+import { createTestDb, cleanupTestDb, type TestDb } from './testDb';
+
+// Module-level variable to hold the test database
+// Using 'mock' prefix so Jest allows it in jest.mock() factory
+let mockTestDbInstance: TestDb | null = null;
+
+/**
+ * Sets up the test database
+ * This should be called in beforeEach of test files
+ */
+export function setupTestDatabase(): TestDb {
+ if (mockTestDbInstance) {
+ cleanupTestDb(mockTestDbInstance);
+ }
+ mockTestDbInstance = createTestDb();
+ return mockTestDbInstance;
+}
+
+/**
+ * Gets the current test database instance
+ */
+export function getTestDb(): TestDb {
+ if (!mockTestDbInstance) {
+ throw new Error(
+ 'Test database not initialized. Call setupTestDatabase() first.',
+ );
+ }
+ return mockTestDbInstance;
+}
+
+/**
+ * Cleans up the test database
+ */
+export function teardownTestDatabase() {
+ if (mockTestDbInstance) {
+ cleanupTestDb(mockTestDbInstance);
+ mockTestDbInstance = null;
+ }
+}
+
+// Mock utility functions (still needed for tests)
+jest.mock('@utils/showToast', () => ({
+ showToast: jest.fn(),
+}));
+
+jest.mock('@utils/error', () => ({
+ getErrorMessage: jest.fn(
+ (error: any) => error?.message || String(error) || 'Unknown error',
+ ),
+}));
+
+jest.mock('@strings/translations', () => ({
+ getString: jest.fn((key: string) => key),
+}));
+
+jest.mock('@utils/Storages', () => ({
+ NOVEL_STORAGE: '/mock/novel/storage',
+}));
+
+// Mock NativeFile
+jest.mock('@specs/NativeFile', () => ({
+ __esModule: true,
+ default: {
+ exists: jest.fn().mockReturnValue(true),
+ mkdir: jest.fn(),
+ unlink: jest.fn(),
+ copyFile: jest.fn(),
+ readFile: jest.fn().mockReturnValue(''),
+ writeFile: jest.fn(),
+ },
+}));
+
+// Mock plugin-related modules
+jest.mock('@plugins/helpers/fetch', () => ({
+ downloadFile: jest.fn().mockResolvedValue(undefined),
+}));
+
+jest.mock('@plugins/pluginManager', () => ({
+ getPlugin: jest.fn().mockReturnValue({
+ imageRequestInit: undefined,
+ }),
+}));
+
+jest.mock('@services/plugin/fetch', () => ({
+ fetchNovel: jest.fn().mockResolvedValue({
+ path: '/test/novel',
+ name: 'Test Novel',
+ cover: 'https://example.com/cover.png',
+ summary: 'Test summary',
+ author: 'Test Author',
+ artist: 'Test Artist',
+ status: 'Ongoing',
+ genres: 'Fantasy, Adventure',
+ totalPages: 1,
+ chapters: [],
+ }),
+}));
+
+// Mock expo-document-picker
+jest.mock('expo-document-picker', () => ({
+ getDocumentAsync: jest.fn().mockResolvedValue({
+ canceled: true,
+ assets: null,
+ }),
+}));
+
+// Mock database utilities
+jest.mock('@database/utils/parser', () => ({
+ chapterFilterToSQL: jest.fn().mockReturnValue(undefined),
+ chapterOrderToSQL: jest.fn().mockReturnValue(undefined),
+}));
+
+// Mock database constants
+jest.mock('@database/constants', () => ({
+ ChapterFilterKey: {
+ UNREAD: 'unread',
+ DOWNLOADED: 'downloaded',
+ BOOKMARKED: 'bookmarked',
+ },
+ ChapterOrderKey: {
+ BY_SOURCE: 'bySource',
+ BY_SOURCE_DESC: 'bySourceDesc',
+ BY_CHAPTER_NUMBER: 'byChapterNumber',
+ BY_CHAPTER_NUMBER_DESC: 'byChapterNumberDesc',
+ },
+}));
+
+// Mock lodash-es to avoid ES module issues
+jest.mock('lodash-es', () => {
+ const lodash = jest.requireActual('lodash');
+ return {
+ ...lodash,
+ countBy: lodash.countBy,
+ };
+});
+
+// Global test timeout
+jest.setTimeout(10000);
+
+// Note: Each test file should call setupTestDatabase() in beforeEach
+// and clearAllTables() if needed for proper test isolation
+// The database is automatically cleaned up in afterAll
+afterAll(() => {
+ teardownTestDatabase();
+});
diff --git a/src/database/queries/__tests__/testData.ts b/src/database/queries/__tests__/testData.ts
new file mode 100644
index 0000000000..4df447e076
--- /dev/null
+++ b/src/database/queries/__tests__/testData.ts
@@ -0,0 +1,259 @@
+/**
+ * Test data utilities for inserting test data into database
+ */
+
+import type { TestDb } from './testDb';
+import {
+ novelSchema,
+ chapterSchema,
+ categorySchema,
+ repositorySchema,
+ novelCategorySchema,
+ type NovelInsert,
+ type ChapterInsert,
+ type CategoryInsert,
+ type RepositoryInsert,
+ type NovelCategoryInsert,
+} from '@database/schema';
+
+/**
+ * Clears all tables in the test database
+ */
+export function clearAllTables(testDb: TestDb) {
+ const { sqlite } = testDb;
+ sqlite.exec(`
+ DELETE FROM NovelCategory;
+ DELETE FROM Chapter;
+ DELETE FROM Novel;
+ DELETE FROM Repository;
+ DELETE FROM Category WHERE id > 2;
+ `);
+}
+
+/**
+ * Inserts a test novel into the database
+ */
+export async function insertTestNovel(
+ testDb: TestDb,
+ data: Partial = {},
+): Promise {
+ const { drizzleDb } = testDb;
+
+ const novelData: any = {
+ path: `/test/novel/${Math.random()}`,
+ pluginId: 'test-plugin',
+ name: 'Test Novel',
+ cover: null,
+ summary: null,
+ author: null,
+ artist: null,
+ status: 'Unknown',
+ genres: null,
+ inLibrary: false,
+ isLocal: false,
+ totalPages: 0,
+ chaptersDownloaded: 0,
+ chaptersUnread: 0,
+ totalChapters: 0,
+ lastReadAt: null,
+ lastUpdatedAt: null,
+ ...data,
+ };
+
+ const result = drizzleDb
+ .insert(novelSchema)
+ .values(novelData)
+ .returning()
+ .get();
+
+ return result.id;
+}
+
+/**
+ * Inserts a test chapter into the database
+ */
+export async function insertTestChapter(
+ testDb: TestDb,
+ novelId: number,
+ data: Partial = {},
+): Promise {
+ const { drizzleDb } = testDb;
+
+ const chapterData: any = {
+ path: `/test/chapter/${Math.random()}`,
+ name: 'Test Chapter',
+ releaseTime: null,
+ bookmark: false,
+ unread: true,
+ readTime: null,
+ isDownloaded: false,
+ updatedTime: null,
+ chapterNumber: null,
+ page: '1',
+ position: 0,
+ progress: null,
+ ...data,
+ novelId,
+ };
+
+ const result = drizzleDb
+ .insert(chapterSchema)
+ .values(chapterData)
+ .returning()
+ .get();
+
+ return result.id;
+}
+
+/**
+ * Inserts a test category into the database
+ */
+export async function insertTestCategory(
+ testDb: TestDb,
+ data: Partial = {},
+): Promise {
+ const { drizzleDb } = testDb;
+ const categoryData: CategoryInsert = {
+ name: data.name ?? `Test Category ${Date.now()}`,
+ sort: data.sort ?? null,
+ };
+
+ const result = drizzleDb
+ .insert(categorySchema)
+ .values(categoryData)
+ .returning()
+ .get();
+
+ return result.id;
+}
+
+/**
+ * Inserts a test repository into the database
+ */
+export async function insertTestRepository(
+ testDb: TestDb,
+ data: Partial = {},
+): Promise {
+ const { drizzleDb } = testDb;
+ const repoData: RepositoryInsert = {
+ url: data.url ?? `https://test-repo-${Date.now()}.example.com`,
+ };
+
+ const result = drizzleDb
+ .insert(repositorySchema)
+ .values(repoData)
+ .returning()
+ .get();
+
+ return result.id;
+}
+
+/**
+ * Inserts a novel-category association
+ */
+export async function insertTestNovelCategory(
+ testDb: TestDb,
+ novelId: number,
+ categoryId: number,
+): Promise {
+ const { drizzleDb } = testDb;
+ const data: NovelCategoryInsert = {
+ novelId,
+ categoryId,
+ };
+
+ const result = drizzleDb
+ .insert(novelCategorySchema)
+ .values(data)
+ .returning()
+ .get();
+
+ return result.id;
+}
+
+/**
+ * Inserts a novel with optional chapters
+ */
+export async function insertTestNovelWithChapters(
+ testDb: TestDb,
+ novelData: Partial = {},
+ chapters: Partial[] = [],
+): Promise<{ novelId: number; chapterIds: number[] }> {
+ const novelId = await insertTestNovel(testDb, novelData);
+ const chapterIds: number[] = [];
+
+ for (const chapterData of chapters) {
+ const chapterId = await insertTestChapter(testDb, novelId, chapterData);
+ chapterIds.push(chapterId);
+ }
+
+ return { novelId, chapterIds };
+}
+
+/**
+ * Bulk insert test data
+ */
+export interface TestFixtures {
+ novels?: Partial[];
+ chapters?: Array<{ novelId: number } & Partial>;
+ categories?: Partial[];
+ repositories?: Partial[];
+ novelCategories?: Array<{ novelId: number; categoryId: number }>;
+}
+
+export async function seedTestData(
+ testDb: TestDb,
+ fixtures: TestFixtures,
+): Promise<{
+ novelIds: number[];
+ chapterIds: number[];
+ categoryIds: number[];
+ repositoryIds: number[];
+}> {
+ const novelIds: number[] = [];
+ const chapterIds: number[] = [];
+ const categoryIds: number[] = [];
+ const repositoryIds: number[] = [];
+
+ // Insert novels
+ if (fixtures.novels) {
+ for (const novelData of fixtures.novels) {
+ const id = await insertTestNovel(testDb, novelData);
+ novelIds.push(id);
+ }
+ }
+
+ // Insert chapters (can reference novels by index or use provided novelId)
+ if (fixtures.chapters) {
+ for (const chapterData of fixtures.chapters) {
+ const { novelId, ...rest } = chapterData;
+ const id = await insertTestChapter(testDb, novelId, rest);
+ chapterIds.push(id);
+ }
+ }
+
+ // Insert categories
+ if (fixtures.categories) {
+ for (const categoryData of fixtures.categories) {
+ const id = await insertTestCategory(testDb, categoryData);
+ categoryIds.push(id);
+ }
+ }
+
+ // Insert repositories
+ if (fixtures.repositories) {
+ for (const repoData of fixtures.repositories) {
+ const id = await insertTestRepository(testDb, repoData);
+ repositoryIds.push(id);
+ }
+ }
+
+ // Insert novel-category associations
+ if (fixtures.novelCategories) {
+ for (const { novelId, categoryId } of fixtures.novelCategories) {
+ await insertTestNovelCategory(testDb, novelId, categoryId);
+ }
+ }
+
+ return { novelIds, chapterIds, categoryIds, repositoryIds };
+}
diff --git a/src/database/queries/__tests__/testDb.ts b/src/database/queries/__tests__/testDb.ts
new file mode 100644
index 0000000000..cf70e2efe3
--- /dev/null
+++ b/src/database/queries/__tests__/testDb.ts
@@ -0,0 +1,169 @@
+/* eslint-disable no-console */
+/**
+ * Test database factory for creating in-memory SQLite databases
+ * Uses better-sqlite3 for Node.js testing environment
+ */
+
+import Database from 'better-sqlite3';
+import { drizzle } from 'drizzle-orm/better-sqlite3';
+import { schema } from '@database/schema';
+import { createTestDbManager } from './testDbManager';
+import {
+ createCategoryTriggerQuery,
+ createNovelTriggerQueryDelete,
+ createNovelTriggerQueryInsert,
+ createNovelTriggerQueryUpdate,
+} from '@database/queryStrings/triggers';
+
+// SQL migration from drizzle/0000_past_mandrill.sql
+// SQLite uses double quotes or no quotes for identifiers, not backticks
+const MIGRATION_STATEMENTS = [
+ `CREATE TABLE IF NOT EXISTS Category (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ name text NOT NULL,
+ sort integer
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS category_name_unique ON Category (name)`,
+ `CREATE INDEX IF NOT EXISTS category_sort_idx ON Category (sort)`,
+ `CREATE TABLE IF NOT EXISTS Chapter (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ novelId integer NOT NULL,
+ path text NOT NULL,
+ name text NOT NULL,
+ releaseTime text,
+ bookmark integer DEFAULT false,
+ unread integer DEFAULT true,
+ readTime text,
+ isDownloaded integer DEFAULT false,
+ updatedTime text,
+ chapterNumber real,
+ page text DEFAULT '1',
+ position integer DEFAULT 0,
+ progress integer
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS chapter_novel_path_unique ON Chapter (novelId, path)`,
+ `CREATE INDEX IF NOT EXISTS chapterNovelIdIndex ON Chapter (novelId, position, page, id)`,
+ `CREATE TABLE IF NOT EXISTS Novel (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ path text NOT NULL,
+ pluginId text NOT NULL,
+ name text NOT NULL,
+ cover text,
+ summary text,
+ author text,
+ artist text,
+ status text DEFAULT 'Unknown',
+ genres text,
+ inLibrary integer DEFAULT false,
+ isLocal integer DEFAULT false,
+ totalPages integer DEFAULT 0,
+ chaptersDownloaded integer DEFAULT 0,
+ chaptersUnread integer DEFAULT 0,
+ totalChapters integer DEFAULT 0,
+ lastReadAt text,
+ lastUpdatedAt text
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS novel_path_plugin_unique ON Novel (path, pluginId)`,
+ `CREATE INDEX IF NOT EXISTS NovelIndex ON Novel (pluginId, path, id, inLibrary)`,
+ `CREATE TABLE IF NOT EXISTS NovelCategory (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ novelId integer NOT NULL,
+ categoryId integer NOT NULL
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS novel_category_unique ON NovelCategory (novelId, categoryId)`,
+ `CREATE TABLE IF NOT EXISTS Repository (
+ id integer PRIMARY KEY AUTOINCREMENT NOT NULL,
+ url text NOT NULL
+)`,
+ `CREATE UNIQUE INDEX IF NOT EXISTS repository_url_unique ON Repository (url)`,
+];
+
+/**
+ * Creates a fresh in-memory SQLite database with schema and migrations
+ * @returns Database instance and dbManager
+ */
+export function createTestDb() {
+ // Create in-memory database
+ const sqlite = new Database(':memory:');
+
+ // Set pragmas for better performance and behavior
+ sqlite.pragma('journal_mode = WAL');
+ sqlite.pragma('synchronous = NORMAL');
+ sqlite.pragma('temp_store = MEMORY');
+ sqlite.pragma('busy_timeout = 5000');
+ sqlite.pragma('foreign_keys = ON');
+
+ // Run migration SQL to create tables
+ // Execute each statement separately
+ for (const statement of MIGRATION_STATEMENTS) {
+ try {
+ sqlite.exec(statement.trim());
+ } catch (error) {
+ console.error('Migration error:', error);
+ console.error('Failed statement:', statement);
+ throw error;
+ }
+ }
+
+ // Verify tables were created (for debugging)
+ const tables = sqlite
+ .prepare("SELECT name FROM sqlite_master WHERE type='table'")
+ .all();
+ const tableNames = tables
+ .map((t: any) => t.name)
+ .filter((n: string) => n !== 'sqlite_sequence');
+ if (tableNames.length === 0) {
+ throw new Error('No tables were created by migration');
+ }
+ // Verify Novel table exists
+ if (!tableNames.includes('Novel')) {
+ throw new Error(
+ `Novel table not found. Created tables: ${tableNames.join(', ')}`,
+ );
+ }
+
+ // Create Drizzle instance
+ const drizzleDb = drizzle({ client: sqlite, schema });
+
+ // Create triggers (same as production)
+ sqlite.exec(createNovelTriggerQueryInsert);
+ sqlite.exec(createNovelTriggerQueryUpdate);
+ sqlite.exec(createNovelTriggerQueryDelete);
+ sqlite.exec(createCategoryTriggerQuery);
+
+ // Populate default categories
+ sqlite.exec(`
+ INSERT OR IGNORE INTO Category (id, name, sort) VALUES
+ (1, 'Default', 1),
+ (2, 'Local', 2)
+ `);
+
+ // Create test-compatible dbManager
+ const dbManager = createTestDbManager(drizzleDb, sqlite);
+
+ return {
+ sqlite,
+ drizzleDb,
+ dbManager,
+ };
+}
+
+/**
+ * Closes and cleans up a test database
+ */
+export function cleanupTestDb(testDb: ReturnType) {
+ testDb.sqlite.close();
+}
+
+/**
+ * Gets a dbManager instance for a test database
+ * Convenience function for tests
+ */
+export function getTestDbManager(testDb: ReturnType) {
+ return testDb.dbManager;
+}
+
+/**
+ * Type export for test database
+ */
+export type TestDb = ReturnType;
diff --git a/src/database/queries/__tests__/testDbManager.ts b/src/database/queries/__tests__/testDbManager.ts
new file mode 100644
index 0000000000..1670509db9
--- /dev/null
+++ b/src/database/queries/__tests__/testDbManager.ts
@@ -0,0 +1,134 @@
+/**
+ * Test-specific dbManager implementation for better-sqlite3
+ * Provides compatibility with op-sqlite specific methods
+ */
+
+import type { IDbManager } from '@database/manager/manager.d';
+import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
+import Database from 'better-sqlite3';
+import { Placeholder, sql } from 'drizzle-orm';
+import { SQLitePreparedQuery } from 'drizzle-orm/sqlite-core';
+
+interface ExecutableSelect {
+ toSQL(): { sql: string; params: unknown[] };
+ get(): Promise;
+ all(): Promise;
+}
+
+type DrizzleDb = BetterSQLite3Database;
+type TransactionParameter = Parameters<
+ Parameters[0]
+>[0];
+
+const isBuilderLike = (value: unknown): value is Record => {
+ return (
+ !!value &&
+ typeof value === 'object' &&
+ typeof (value as { get?: unknown }).get === 'function' &&
+ typeof (value as { all?: unknown }).all === 'function'
+ );
+};
+
+const wrapBuilder = (builder: T): T => {
+ return new Proxy(builder, {
+ get(target, prop, receiver) {
+ const value = Reflect.get(target, prop, receiver);
+ if (prop === 'get' && typeof value === 'function') {
+ return (...args: unknown[]) =>
+ Promise.resolve(value.apply(target, args as never[]));
+ }
+ if (prop === 'all' && typeof value === 'function') {
+ return (...args: unknown[]) =>
+ Promise.resolve(value.apply(target, args as never[]));
+ }
+ if (typeof value === 'function') {
+ return (...args: unknown[]) => {
+ const result = value.apply(target, args as never[]);
+ return isBuilderLike(result) ? wrapBuilder(result as object) : result;
+ };
+ }
+ return value;
+ },
+ });
+};
+
+/**
+ * Creates a test-compatible dbManager that works with better-sqlite3
+ */
+export function createTestDbManager(
+ drizzleDb: DrizzleDb,
+ sqlite: Database.Database,
+): IDbManager {
+ // Create a wrapper that implements the IDbManager interface
+ const dbManager = {
+ // Drizzle methods - delegate to drizzleDb
+ select: (...args: Parameters) =>
+ wrapBuilder(drizzleDb.select(...args)),
+ selectDistinct: (...args: Parameters) =>
+ wrapBuilder(drizzleDb.selectDistinct(...args)),
+ $count: drizzleDb.$count.bind(drizzleDb),
+ query: drizzleDb.query,
+ run: drizzleDb.run.bind(drizzleDb),
+ with: (...args: Parameters) =>
+ wrapBuilder(drizzleDb.with(...args)),
+ $with: (...args: Parameters) =>
+ wrapBuilder(drizzleDb.$with(...args)),
+ all: (...args: Parameters) =>
+ Promise.resolve(drizzleDb.all(...args)),
+ get: (...args: Parameters) =>
+ Promise.resolve(drizzleDb.get(...args)),
+ values: (...args: Parameters) =>
+ Promise.resolve(drizzleDb.values(...args)),
+
+ // Test-compatible implementations of op-sqlite specific methods
+ getSync(
+ query: T,
+ ): Awaited> {
+ const { sql, params } = query.toSQL();
+ const stmt = sqlite.prepare(sql);
+ const result = stmt.get(params as any[]) as Awaited>;
+ return result;
+ },
+
+ async allSync(
+ query: T,
+ ): Promise>> {
+ const { sql, params } = query.toSQL();
+ const stmt = sqlite.prepare(sql);
+ const results = stmt.all(params as any[]) as Awaited<
+ ReturnType
+ >;
+ return results;
+ },
+
+ async batch>(
+ data: T[],
+ fn: (
+ tx: TransactionParameter,
+ ph: (arg: Extract) => Placeholder,
+ ) => SQLitePreparedQuery,
+ ) {
+ const ph = (arg: Extract) => sql.placeholder(arg);
+ await this.write(async tx => {
+ const prep = fn(tx, ph);
+ for (let index = 0; index < data.length; index++) {
+ prep.run(data[index]);
+ }
+ });
+ },
+
+ // better-sqlite3 can't handle an async transaction function
+ async write(fn: (tx: TransactionParameter) => Promise): Promise {
+ const result = await fn(drizzleDb as any);
+
+ return result;
+ },
+ async transaction(
+ fn: (tx: TransactionParameter) => Promise,
+ ): Promise {
+ return await this.write(fn);
+ },
+ };
+
+ return dbManager;
+}
diff --git a/src/database/queryStrings/indexes.ts b/src/database/queryStrings/indexes.ts
new file mode 100644
index 0000000000..cbc3a46950
--- /dev/null
+++ b/src/database/queryStrings/indexes.ts
@@ -0,0 +1,22 @@
+
+export const createNovelIndexQuery = `
+ CREATE INDEX
+ IF NOT EXISTS
+ NovelIndex ON Novel(pluginId, path, id, inLibrary);
+`;
+
+export const dropNovelIndexQuery = `
+ DROP INDEX IF EXISTS NovelIndex;
+`;
+
+
+
+export const createChapterIndexQuery = `
+ CREATE INDEX
+ IF NOT EXISTS
+ chapterNovelIdIndex ON Chapter(novelId, position,page, id)
+`;
+
+export const dropChapterIndexQuery = `
+ DROP INDEX IF EXISTS chapterNovelIdIndex;
+`;
\ No newline at end of file
diff --git a/src/database/queryStrings/populate.ts b/src/database/queryStrings/populate.ts
new file mode 100644
index 0000000000..38688c8a94
--- /dev/null
+++ b/src/database/queryStrings/populate.ts
@@ -0,0 +1,10 @@
+import { getString } from '@strings/translations';
+
+const escapeSqlString = (value: string) => value.replace(/'/g, "''");
+
+// if category with id = 2 exists, nothing in db.ts file is executed
+export const createCategoryDefaultQuery = `
+INSERT OR IGNORE INTO Category (id, name, sort) VALUES
+ (1, '${escapeSqlString(getString('categories.default'))}', 1),
+ (2, '${escapeSqlString(getString('categories.local'))}', 2)
+`;
diff --git a/src/database/tables/NovelTable.ts b/src/database/queryStrings/triggers.ts
similarity index 70%
rename from src/database/tables/NovelTable.ts
rename to src/database/queryStrings/triggers.ts
index acba784aa6..f93e4caa12 100644
--- a/src/database/tables/NovelTable.ts
+++ b/src/database/queryStrings/triggers.ts
@@ -1,37 +1,3 @@
-export const createNovelTableQuery = `
- CREATE TABLE IF NOT EXISTS Novel (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- path TEXT NOT NULL,
- pluginId TEXT NOT NULL,
- name TEXT NOT NULL,
- cover TEXT,
- summary TEXT,
- author TEXT,
- artist TEXT,
- status TEXT Default 'Unknown',
- genres TEXT,
- inLibrary INTEGER DEFAULT 0,
- isLocal INTEGER DEFAULT 0,
- totalPages INTEGER DEFAULT 0,
- chaptersDownloaded INTEGER DEFAULT 0,
- chaptersUnread INTEGER DEFAULT 0,
- totalChapters INTEGER DEFAULT 0,
- lastReadAt TEXT,
- lastUpdatedAt TEXT,
- UNIQUE(path, pluginId)
- );
-`;
-
-export const createNovelIndexQuery = `
- CREATE INDEX
- IF NOT EXISTS
- NovelIndex ON Novel(pluginId, path, id, inLibrary);
-`;
-
-export const dropNovelIndexQuery = `
- DROP INDEX IF EXISTS NovelIndex;
-`;
-
export const createNovelTriggerQueryInsert = `CREATE TRIGGER IF NOT EXISTS update_novel_stats
AFTER INSERT ON Chapter
BEGIN
@@ -70,3 +36,10 @@ BEGIN
WHERE id = OLD.novelId;
END;
`;
+
+export const createCategoryTriggerQuery = `
+ CREATE TRIGGER IF NOT EXISTS add_category AFTER INSERT ON Category
+ BEGIN
+ UPDATE Category SET sort = (SELECT IFNULL(sort, new.id)) WHERE id = new.id;
+ END;
+`;
\ No newline at end of file
diff --git a/src/database/schema/category.ts b/src/database/schema/category.ts
new file mode 100644
index 0000000000..2a4b8bcf12
--- /dev/null
+++ b/src/database/schema/category.ts
@@ -0,0 +1,23 @@
+import {
+ index,
+ integer,
+ sqliteTable,
+ text,
+ uniqueIndex,
+} from 'drizzle-orm/sqlite-core';
+
+export const category = sqliteTable(
+ 'Category',
+ {
+ id: integer('id').primaryKey({ autoIncrement: true }),
+ name: text('name').notNull(),
+ sort: integer('sort'),
+ },
+ table => [
+ uniqueIndex('category_name_unique').on(table.name),
+ index('category_sort_idx').on(table.sort),
+ ],
+);
+
+export type CategoryRow = typeof category.$inferSelect;
+export type CategoryInsert = typeof category.$inferInsert;
diff --git a/src/database/schema/chapter.ts b/src/database/schema/chapter.ts
new file mode 100644
index 0000000000..239bac4902
--- /dev/null
+++ b/src/database/schema/chapter.ts
@@ -0,0 +1,40 @@
+import {
+ index,
+ integer,
+ real,
+ sqliteTable,
+ text,
+ uniqueIndex,
+} from 'drizzle-orm/sqlite-core';
+
+export const chapter = sqliteTable(
+ 'Chapter',
+ {
+ id: integer('id').primaryKey({ autoIncrement: true }),
+ novelId: integer('novelId').notNull(),
+ path: text('path').notNull(),
+ name: text('name').notNull(),
+ releaseTime: text('releaseTime'),
+ bookmark: integer('bookmark', { mode: 'boolean' }).default(false),
+ unread: integer('unread', { mode: 'boolean' }).default(true),
+ readTime: text('readTime'),
+ isDownloaded: integer('isDownloaded', { mode: 'boolean' }).default(false),
+ updatedTime: text('updatedTime'),
+ chapterNumber: real('chapterNumber'),
+ page: text('page').default('1'),
+ position: integer('position').default(0),
+ progress: integer('progress'),
+ },
+ table => [
+ uniqueIndex('chapter_novel_path_unique').on(table.novelId, table.path),
+ index('chapterNovelIdIndex').on(
+ table.novelId,
+ table.position,
+ table.page,
+ table.id,
+ ),
+ ],
+);
+
+export type ChapterRow = typeof chapter.$inferSelect;
+export type ChapterInsert = typeof chapter.$inferInsert;
diff --git a/src/database/schema/index.ts b/src/database/schema/index.ts
new file mode 100644
index 0000000000..4811ab878f
--- /dev/null
+++ b/src/database/schema/index.ts
@@ -0,0 +1,41 @@
+export {
+ category as categorySchema,
+ type CategoryRow,
+ type CategoryInsert,
+} from './category';
+export { novel as novelSchema, type NovelRow, type NovelInsert } from './novel';
+export {
+ chapter as chapterSchema,
+ type ChapterRow,
+ type ChapterInsert,
+} from './chapter';
+export {
+ novelCategory as novelCategorySchema,
+ type NovelCategoryRow,
+ type NovelCategoryInsert,
+} from './novelCategory';
+export {
+ repository as repositorySchema,
+ type RepositoryRow,
+ type RepositoryInsert,
+} from './repository';
+
+import { category } from './category';
+import { novel } from './novel';
+import { chapter } from './chapter';
+import { novelCategory } from './novelCategory';
+import { repository } from './repository';
+
+/**
+ * Unified schema object containing all database tables
+ * Use this with Drizzle ORM for type-safe database operations
+ */
+export const schema = {
+ category,
+ novel,
+ chapter,
+ novelCategory,
+ repository,
+} as const;
+
+export type Schema = typeof schema;
diff --git a/src/database/schema/novel.ts b/src/database/schema/novel.ts
new file mode 100644
index 0000000000..087501233c
--- /dev/null
+++ b/src/database/schema/novel.ts
@@ -0,0 +1,43 @@
+import {
+ index,
+ integer,
+ sqliteTable,
+ text,
+ uniqueIndex,
+} from 'drizzle-orm/sqlite-core';
+
+export const novel = sqliteTable(
+ 'Novel',
+ {
+ id: integer('id').primaryKey({ autoIncrement: true }),
+ path: text('path').notNull(),
+ pluginId: text('pluginId').notNull(),
+ name: text('name').notNull(),
+ cover: text('cover'),
+ summary: text('summary'),
+ author: text('author'),
+ artist: text('artist'),
+ status: text('status').default('Unknown'),
+ genres: text('genres'),
+ inLibrary: integer('inLibrary', { mode: 'boolean' }).default(false),
+ isLocal: integer('isLocal', { mode: 'boolean' }).default(false),
+ totalPages: integer('totalPages').default(0),
+ chaptersDownloaded: integer('chaptersDownloaded').default(0),
+ chaptersUnread: integer('chaptersUnread').default(0),
+ totalChapters: integer('totalChapters').default(0),
+ lastReadAt: text('lastReadAt'),
+ lastUpdatedAt: text('lastUpdatedAt'),
+ },
+ table => [
+ uniqueIndex('novel_path_plugin_unique').on(table.path, table.pluginId),
+ index('NovelIndex').on(
+ table.pluginId,
+ table.path,
+ table.id,
+ table.inLibrary,
+ ),
+ ],
+);
+
+export type NovelRow = typeof novel.$inferSelect;
+export type NovelInsert = typeof novel.$inferInsert;
diff --git a/src/database/schema/novelCategory.ts b/src/database/schema/novelCategory.ts
new file mode 100644
index 0000000000..12147d3a98
--- /dev/null
+++ b/src/database/schema/novelCategory.ts
@@ -0,0 +1,20 @@
+import {
+ integer,
+ sqliteTable,
+ uniqueIndex,
+} from 'drizzle-orm/sqlite-core';
+
+export const novelCategory = sqliteTable(
+ 'NovelCategory',
+ {
+ id: integer('id').primaryKey({ autoIncrement: true }),
+ novelId: integer('novelId').notNull(),
+ categoryId: integer('categoryId').notNull(),
+ },
+ table => [
+ uniqueIndex('novel_category_unique').on(table.novelId, table.categoryId),
+ ],
+);
+
+export type NovelCategoryRow = typeof novelCategory.$inferSelect;
+export type NovelCategoryInsert = typeof novelCategory.$inferInsert;
diff --git a/src/database/schema/repository.ts b/src/database/schema/repository.ts
new file mode 100644
index 0000000000..fdd5ee5332
--- /dev/null
+++ b/src/database/schema/repository.ts
@@ -0,0 +1,18 @@
+import {
+ integer,
+ sqliteTable,
+ text,
+ uniqueIndex,
+} from 'drizzle-orm/sqlite-core';
+
+export const repository = sqliteTable(
+ 'Repository',
+ {
+ id: integer('id').primaryKey({ autoIncrement: true }),
+ url: text('url').notNull(),
+ },
+ table => [uniqueIndex('repository_url_unique').on(table.url)],
+);
+
+export type RepositoryRow = typeof repository.$inferSelect;
+export type RepositoryInsert = typeof repository.$inferInsert;
diff --git a/src/database/tables/CategoryTable.ts b/src/database/tables/CategoryTable.ts
deleted file mode 100644
index e6300195c9..0000000000
--- a/src/database/tables/CategoryTable.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { getString } from '@strings/translations';
-
-export const createCategoriesTableQuery = `
- CREATE TABLE IF NOT EXISTS Category (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- name TEXT NOT NULL UNIQUE,
- sort INTEGER
- );
-`;
-
-export const createCategoryTriggerQuery = `
- CREATE TRIGGER IF NOT EXISTS add_category AFTER INSERT ON Category
- BEGIN
- UPDATE Category SET sort = (SELECT IFNULL(sort, new.id)) WHERE id = new.id;
- END;
-`;
-
-// if category with id = 2 exists, nothing in db.ts file is executed
-export const createCategoryDefaultQuery = `
-INSERT OR IGNORE INTO Category (id, name, sort) VALUES
- (1, "${getString('categories.default')}", 1),
- (2, "${getString('categories.local')}", 2)
-`;
diff --git a/src/database/tables/ChapterTable.ts b/src/database/tables/ChapterTable.ts
deleted file mode 100644
index abcd71e8f4..0000000000
--- a/src/database/tables/ChapterTable.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-export const createChapterTableQuery = `
- CREATE TABLE IF NOT EXISTS Chapter (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- novelId INTEGER NOT NULL,
- path TEXT NOT NULL,
- name TEXT NOT NULL,
- releaseTime TEXT,
- bookmark INTEGER DEFAULT 0,
- unread INTEGER DEFAULT 1,
- readTime TEXT,
- isDownloaded INTEGER DEFAULT 0,
- updatedTime TEXT,
- chapterNumber REAL NULL,
- page TEXT DEFAULT "1",
- position INTEGER DEFAULT 0,
- progress INTEGER,
- UNIQUE(path, novelId),
- FOREIGN KEY (novelId) REFERENCES Novel(id) ON DELETE CASCADE
- )
-`;
-
-export const createChapterIndexQuery = `
- CREATE INDEX
- IF NOT EXISTS
- chapterNovelIdIndex ON Chapter(novelId, position,page, id)
-`;
-
-export const dropChapterIndexQuery = `
- DROP INDEX IF EXISTS chapterNovelIdIndex;
-`;
diff --git a/src/database/tables/NovelCategoryTable.ts b/src/database/tables/NovelCategoryTable.ts
deleted file mode 100644
index 7fc36ce843..0000000000
--- a/src/database/tables/NovelCategoryTable.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-export const createNovelCategoryTableQuery = `
- CREATE TABLE IF NOT EXISTS NovelCategory (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- novelId INTEGER NOT NULL,
- categoryId INTEGER NOT NULL,
- UNIQUE(novelId, categoryId),
- FOREIGN KEY (novelId) REFERENCES Novel(id) ON DELETE CASCADE,
- FOREIGN KEY (categoryId) REFERENCES Category(id) ON DELETE CASCADE
- );
-`;
diff --git a/src/database/tables/RepositoryTable.ts b/src/database/tables/RepositoryTable.ts
deleted file mode 100644
index 6df27ace94..0000000000
--- a/src/database/tables/RepositoryTable.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export const createRepositoryTableQuery = `
- CREATE TABLE IF NOT EXISTS Repository (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- url TEXT NOT NULL,
- UNIQUE(url)
- );
-`;
diff --git a/src/database/types/index.ts b/src/database/types/index.ts
index 1cf2325578..844e9e2c43 100644
--- a/src/database/types/index.ts
+++ b/src/database/types/index.ts
@@ -5,29 +5,23 @@ export interface NovelInfo {
path: string;
pluginId: string;
name: string;
- cover?: string;
- summary?: string;
- author?: string;
- artist?: string;
- status?: NovelStatus | string;
- genres?: string;
- inLibrary: boolean;
- isLocal: boolean;
- totalPages: number;
+ cover?: string | null;
+ summary?: string | null;
+ author?: string | null;
+ artist?: string | null;
+ status?: NovelStatus | string | null;
+ genres?: string | null;
+ inLibrary?: boolean | null;
+ isLocal?: boolean | null;
+ totalPages?: number | null;
}
export interface DBNovelInfo extends NovelInfo {
- totalChapters: number;
- chaptersDownloaded: number;
- chaptersUnread: number;
- lastReadAt: string;
- lastUpdatedAt: string;
-}
-
-export interface LibraryNovelInfo extends DBNovelInfo {
- category: string;
- chaptersUnread: number;
- chaptersDownloaded: number;
+ totalChapters: number | null;
+ chaptersDownloaded: number | null;
+ chaptersUnread: number | null;
+ lastReadAt: string | null;
+ lastUpdatedAt: string | null;
}
export interface ChapterInfo {
@@ -35,39 +29,39 @@ export interface ChapterInfo {
novelId: number;
path: string;
name: string;
- releaseTime?: string;
+ releaseTime?: string | null;
readTime: string | null;
- bookmark: boolean;
- unread: boolean;
- isDownloaded: boolean;
+ bookmark: boolean | null;
+ unread: boolean | null;
+ isDownloaded: boolean | null;
updatedTime: string | null;
- chapterNumber?: number;
- page: string;
+ chapterNumber?: number | null;
+ page: string | null;
progress: number | null;
- position?: number;
+ position?: number | null;
}
export interface DownloadedChapter extends ChapterInfo {
pluginId: string;
novelName: string;
novelPath: string;
- novelCover: string;
+ novelCover: string | null;
}
export interface History extends ChapterInfo {
pluginId: string;
novelName: string;
novelPath: string;
- novelCover: string;
- readTime: string;
+ novelCover: string | null;
+ readTime: string | null;
}
export interface Update extends ChapterInfo {
- updatedTime: string;
+ updatedTime: string | null;
pluginId: string;
novelName: string;
novelPath: string;
- novelCover: string;
+ novelCover: string | null;
}
export interface UpdateOverview {
@@ -75,13 +69,13 @@ export interface UpdateOverview {
novelName: string;
updateDate: string;
updatesPerDay: number;
- novelCover: string;
+ novelCover: string | null;
}
export interface Category {
id: number;
name: string;
- sort: number;
+ sort: number | null;
}
export interface NovelCategory {
@@ -116,5 +110,3 @@ export interface Repository {
id: number;
url: string;
}
-
-export * from './migration';
diff --git a/src/database/types/migration.ts b/src/database/types/migration.ts
deleted file mode 100644
index 03e0337688..0000000000
--- a/src/database/types/migration.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { SQLiteDatabase } from 'expo-sqlite';
-
-/**
- * Represents a single database migration
- */
-export interface Migration {
- /**
- * The version number this migration upgrades to
- * Must be unique and sequential (1, 2, 3, etc.)
- */
- version: number;
-
- /**
- * Optional description of what this migration does
- */
- description?: string;
-
- /**
- * The migration function that performs the database changes
- * Should be idempotent and handle errors gracefully
- */
- migrate: (db: SQLiteDatabase) => void;
-}
diff --git a/src/database/utils/filter.ts b/src/database/utils/filter.ts
new file mode 100644
index 0000000000..759dbb762c
--- /dev/null
+++ b/src/database/utils/filter.ts
@@ -0,0 +1,97 @@
+import {
+ ChapterFilterKey,
+ ChapterFilterPositiveKey,
+} from '@database/constants';
+
+const FILTER_STATES = {
+ 'INDETERMINATE': 1,
+ 'OFF': 0,
+ 'ON': 2,
+} as const;
+export type FilterStates = typeof FILTER_STATES;
+
+export class ChapterFilterObject {
+ private filter: Map<
+ ChapterFilterPositiveKey,
+ FilterStates[keyof FilterStates]
+ >;
+ private setState: (value: ChapterFilterKey[]) => void;
+
+ constructor(
+ state?: ChapterFilterKey[],
+ setState?: (value: ChapterFilterKey[]) => void,
+ ) {
+ this.filter = new Map();
+ if (state && Array.isArray(state)) {
+ state.forEach(key => {
+ const v = key.split('-');
+ const k = v[1] ?? v[0];
+ this.filter.set(
+ k as ChapterFilterPositiveKey,
+ v.length === 1 ? FILTER_STATES.ON : FILTER_STATES.INDETERMINATE,
+ );
+ });
+ }
+ this.setState = setState ?? (() => {});
+ }
+
+ toArray(): ChapterFilterKey[] {
+ const res = Array.from(this.filter.entries())
+ .map(([key, value]) => {
+ switch (value) {
+ case FILTER_STATES.ON:
+ return key;
+ case FILTER_STATES.INDETERMINATE:
+ return `not-${key}`;
+ default:
+ return null;
+ }
+ })
+ .filter(v => v !== null);
+ return res as ChapterFilterKey[];
+ }
+
+ set(key: ChapterFilterPositiveKey, value: keyof typeof FILTER_STATES) {
+ this.filter.set(key, FILTER_STATES[value]);
+ this.setState([...this.toArray()]);
+ return this;
+ }
+
+ unset(key: ChapterFilterPositiveKey) {
+ this.filter.delete(key);
+ this.setState([...this.toArray()]);
+ return this;
+ }
+
+ get(key: ChapterFilterPositiveKey) {
+ return this.filter.get(key);
+ }
+
+ state(key: ChapterFilterPositiveKey) {
+ const value = this.filter.get(key);
+ if (!this.filter.has(key) || value === FILTER_STATES.OFF) {
+ return false;
+ } else if (value === FILTER_STATES.INDETERMINATE) {
+ return 'indeterminate';
+ }
+ return true;
+ }
+
+ cycle(key: ChapterFilterPositiveKey) {
+ switch (this.state(key)) {
+ case 'indeterminate':
+ this.set(key, 'OFF');
+ break;
+ case true:
+ this.set(key, 'INDETERMINATE');
+ break;
+ default:
+ this.set(key, 'ON');
+ }
+ return this;
+ }
+
+ getMap() {
+ return this.filter;
+ }
+}
diff --git a/src/database/utils/migrationRunner.ts b/src/database/utils/migrationRunner.ts
deleted file mode 100644
index 3a103c0abb..0000000000
--- a/src/database/utils/migrationRunner.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-import { SQLiteDatabase } from 'expo-sqlite';
-import { Migration } from '../types/migration';
-import { showToast } from '@utils/showToast';
-
-/**
- * Migration runner that handles database version upgrades
- */
-export class MigrationRunner {
- private migrations: Migration[];
-
- constructor(migrations: Migration[]) {
- this.migrations = [...migrations].sort((a, b) => a.version - b.version);
- this.validateMigrations();
- }
-
- /**
- * Validates migrations: no duplicates, positive versions, warns on non-sequential versions
- */
- private validateMigrations(): void {
- const versions = new Set();
-
- for (const migration of this.migrations) {
- if (migration.version <= 0) {
- throw new Error(
- `Migration version must be positive: ${migration.version}`,
- );
- }
-
- if (versions.has(migration.version)) {
- throw new Error(
- `Duplicate migration version found: ${migration.version}`,
- );
- }
-
- versions.add(migration.version);
- }
-
- const sortedVersions = Array.from(versions).sort((a, b) => a - b);
- for (let i = 0; i < sortedVersions.length; i++) {
- if (sortedVersions[i] !== i + 1 && __DEV__) {
- // eslint-disable-next-line no-console
- console.warn(
- `Migration versions are not sequential. Expected ${i + 1}, found ${
- sortedVersions[i]
- }`,
- );
- }
- }
- }
-
- private getCurrentVersion(db: SQLiteDatabase): number {
- try {
- const result = db.getFirstSync<{ user_version: number }>(
- 'PRAGMA user_version',
- );
- return result?.user_version ?? 0;
- } catch (error) {
- // If PRAGMA query fails, assume version 0 (fresh database)
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.warn('Failed to get database version, assuming 0:', error);
- }
- return 0;
- }
- }
-
- private setVersion(db: SQLiteDatabase, version: number): void {
- db.execSync(`PRAGMA user_version = ${version}`);
- }
-
- /**
- * Runs all pending migrations in order, each wrapped in a transaction
- * Stops on first error to prevent partial migrations
- */
- runMigrations(db: SQLiteDatabase): void {
- const currentVersion = this.getCurrentVersion(db);
-
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.log(`Current database version: ${currentVersion}`);
- }
-
- const pendingMigrations = this.migrations.filter(
- m => m.version > currentVersion,
- );
-
- if (pendingMigrations.length === 0) {
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.log('No pending migrations');
- }
- return;
- }
-
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.log(`Running ${pendingMigrations.length} pending migration(s)`);
- }
-
- for (const migration of pendingMigrations) {
- try {
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.log(
- `Running migration ${migration.version}${
- migration.description ? `: ${migration.description}` : ''
- }`,
- );
- }
-
- db.withTransactionSync(() => {
- migration.migrate(db);
- this.setVersion(db, migration.version);
- });
-
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.log(`Migration ${migration.version} completed successfully`);
- }
- } catch (error) {
- const errorMessage =
- error instanceof Error
- ? error.message
- : `Migration ${migration.version} failed`;
-
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.error(`Migration ${migration.version} failed:`, error);
- } else {
- showToast(`Database migration failed: ${errorMessage}`);
- }
-
- throw error;
- }
- }
-
- if (__DEV__) {
- const newVersion = this.getCurrentVersion(db);
- // eslint-disable-next-line no-console
- console.log(`Database updated to version ${newVersion}`);
- }
- }
-}
diff --git a/src/database/utils/parser.ts b/src/database/utils/parser.ts
new file mode 100644
index 0000000000..4f27df2cf7
--- /dev/null
+++ b/src/database/utils/parser.ts
@@ -0,0 +1,25 @@
+import {
+ CHAPTER_FILTER,
+ CHAPTER_ORDER,
+ ChapterFilterKey,
+ ChapterOrderKey,
+} from '@database/constants';
+import { SQL, sql } from 'drizzle-orm';
+
+export function chapterOrderToSQL(order: ChapterOrderKey) {
+ const o = CHAPTER_ORDER[order] ?? CHAPTER_ORDER.positionAsc;
+ return sql.raw(o);
+}
+
+export function chapterFilterToSQL(filter?: ChapterFilterKey[]) {
+ if (!filter || !filter.length) return sql.raw('true');
+ let filters: SQL | undefined;
+ filter.forEach(value => {
+ if (!filters) {
+ filters = sql.raw(CHAPTER_FILTER[value]);
+ } else {
+ filters.append(sql.raw(` AND ${CHAPTER_FILTER[value]}`));
+ }
+ });
+ return filters ?? sql.raw('true');
+}
diff --git a/src/hooks/common/useDatabaseInitialization.ts b/src/hooks/common/useDatabaseInitialization.ts
deleted file mode 100644
index 1a895bef61..0000000000
--- a/src/hooks/common/useDatabaseInitialization.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { useEffect, useState } from 'react';
-import { initializeDatabase } from '@database/db';
-
-interface UseDatabaseInitializationResult {
- isDbReady: boolean;
- dbError: Error | null;
- retryInitialization: () => void;
-}
-
-export const useDatabaseInitialization =
- (): UseDatabaseInitializationResult => {
- const [isDbReady, setIsDbReady] = useState(false);
- const [dbError, setDbError] = useState(null);
-
- const initDb = () => {
- try {
- setDbError(null);
- setIsDbReady(false);
- initializeDatabase();
- setIsDbReady(true);
- } catch (error) {
- const dbInitError =
- error instanceof Error
- ? error
- : new Error('Database initialization failed');
- setDbError(dbInitError);
- if (__DEV__) {
- // eslint-disable-next-line no-console
- console.error('Database initialization error:', error);
- }
- }
- };
-
- useEffect(() => {
- initDb();
- }, []);
-
- return {
- isDbReady,
- dbError,
- retryInitialization: initDb,
- };
- };
diff --git a/src/hooks/common/useGithubUpdateChecker.ts b/src/hooks/common/useGithubUpdateChecker.ts
index 99483fcbfe..def0b1852b 100644
--- a/src/hooks/common/useGithubUpdateChecker.ts
+++ b/src/hooks/common/useGithubUpdateChecker.ts
@@ -61,7 +61,7 @@ export const useGithubUpdateChecker = (): GithubUpdate => {
setLatestRelease(release);
setChecking(false);
- } catch (error) {
+ } catch {
// Silently fail in offline mode or on network errors
setChecking(false);
}
diff --git a/src/hooks/index.ts b/src/hooks/index.ts
index 108a4bbcfc..73fd4a46ba 100644
--- a/src/hooks/index.ts
+++ b/src/hooks/index.ts
@@ -1,7 +1,6 @@
export { default as useSearch } from './common/useSearch';
export { default as useFullscreenMode } from './common/useFullscreenMode';
export { default as useBoolean } from './common/useBoolean';
-export { useDatabaseInitialization } from './common/useDatabaseInitialization';
export { usePreviousRouteName } from './common/usePreviousRouteName';
export { useBackHandler } from './common/useBackHandler';
export { useDeviceOrientation } from './common/useDeviceOrientation';
diff --git a/src/hooks/persisted/useNovel.ts b/src/hooks/persisted/useNovel.ts
index cafb0c896a..94a141110e 100644
--- a/src/hooks/persisted/useNovel.ts
+++ b/src/hooks/persisted/useNovel.ts
@@ -3,6 +3,7 @@ import { useMMKVNumber, useMMKVObject } from 'react-native-mmkv';
import { ChapterInfo, NovelInfo } from '@database/types';
import { MMKVStorage } from '@utils/mmkv/mmkv';
import { TRACKED_NOVEL_PREFIX } from './useTrackedNovel';
+import { ChapterOrderKey, ChapterFilterKey } from '@database/constants';
import {
getNovelByPath,
deleteCachedNovels as _deleteCachedNovels,
@@ -45,6 +46,7 @@ export const LAST_READ_PREFIX = 'LAST_READ_PREFIX';
const defaultNovelSettings: NovelSettings = {
showChapterTitles: true,
+ filter: [],
};
const defaultPageIndex = 0;
@@ -52,8 +54,8 @@ const defaultPageIndex = 0;
// #region types
export interface NovelSettings {
- sort?: string;
- filter?: string;
+ sort?: ChapterOrderKey;
+ filter: ChapterFilterKey[];
showChapterTitles?: boolean;
}
@@ -89,7 +91,7 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
const [lastRead, setLastRead] = useMMKVObject(
`${LAST_READ_PREFIX}_${pluginId}_${novelPath}`,
);
- const [novelSettings = defaultNovelSettings, setNovelSettings] =
+ const [novelSettings = defaultNovelSettings, _setNovelSettings] =
useMMKVObject(
`${NOVEL_SETTINSG_PREFIX}_${pluginId}_${novelPath}`,
);
@@ -104,18 +106,26 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
totalChapters?: number;
}>({ batch: 0, total: 0 });
- const settingsSort = novelSettings.sort || defaultChapterSort;
+ const settingsSort: ChapterOrderKey =
+ novelSettings.sort || defaultChapterSort;
+ const settingsFilter: ChapterFilterKey[] = useMemo(
+ () => novelSettings.filter ?? [],
+ [novelSettings.filter],
+ );
+
// #endregion
// #region setters
async function calculatePages(tmpNovel: NovelInfo) {
let tmpPages: string[];
- if (tmpNovel.totalPages > 0) {
+ if ((tmpNovel.totalPages ?? 0) > 0) {
tmpPages = Array(tmpNovel.totalPages)
.fill(0)
.map((_, idx) => String(idx + 1));
} else {
- tmpPages = (await getCustomPages(tmpNovel.id)).map(c => c.page);
+ tmpPages = (await getCustomPages(tmpNovel.id))
+ .map(c => c.page)
+ .filter((page): page is string => page !== null);
}
return tmpPages.length > 1 ? tmpPages : ['1'];
@@ -186,26 +196,6 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
[transformChapters],
);
- const sortAndFilterChapters = useCallback(
- async (sort?: string, filter?: string) => {
- if (novel) {
- setNovelSettings({
- showChapterTitles: novelSettings?.showChapterTitles,
- sort,
- filter,
- });
- }
- },
- [novel, novelSettings?.showChapterTitles, setNovelSettings],
- );
-
- const setShowChapterTitles = useCallback(
- (v: boolean) => {
- setNovelSettings({ ...novelSettings, showChapterTitles: v });
- },
- [novelSettings, setNovelSettings],
- );
-
const followNovel = useCallback(() => {
switchNovelToLibrary(novelPath, pluginId).then(() => {
if (novel) {
@@ -241,17 +231,12 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
}, [novelPath, pluginId]);
const getChapters = useCallback(async () => {
- const page = pages[pageIndex];
+ const page = pages[pageIndex] ?? 1;
if (novel && page) {
let newChapters: ChapterInfo[] = [];
- const config = [
- novel.id,
- settingsSort,
- novelSettings.filter,
- page,
- ] as const;
+ const config = [novel.id, settingsSort, settingsFilter, page] as const;
let chapterCount = await getChapterCount(novel.id, page);
@@ -294,7 +279,7 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
}, [
novel,
novelPath,
- novelSettings.filter,
+ settingsFilter,
pageIndex,
pages,
pluginId,
@@ -313,7 +298,7 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
(await getPageChaptersBatched(
novel.id,
settingsSort,
- novelSettings.filter,
+ settingsFilter,
page,
nextBatch,
)) || [];
@@ -327,9 +312,9 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
batchInformation,
extendChapters,
novel,
- novelSettings.filter,
pageIndex,
pages,
+ settingsFilter,
settingsSort,
]);
@@ -562,7 +547,7 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
_getPageChapters(
novel.id,
settingsSort,
- novelSettings.filter,
+ settingsFilter,
currentPage,
).then(chs => {
setChapters(chs);
@@ -572,7 +557,7 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
novel?.id,
fetching,
settingsSort,
- novelSettings.filter,
+ settingsFilter,
currentPage,
setChapters,
]);
@@ -634,7 +619,7 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
openPage,
setNovel,
setLastRead,
- sortAndFilterChapters,
+
followNovel,
bookmarkChapters,
markPreviouschaptersRead,
@@ -642,7 +627,7 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
markChaptersRead,
markPreviousChaptersUnread,
markChaptersUnread,
- setShowChapterTitles,
+
refreshChapters,
updateChapter,
updateChapterProgress,
@@ -666,7 +651,6 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
setPageIndex,
openPage,
setLastRead,
- sortAndFilterChapters,
followNovel,
bookmarkChapters,
markPreviouschaptersRead,
@@ -674,7 +658,6 @@ export const useNovel = (novelOrPath: string | NovelInfo, pluginId: string) => {
markChaptersRead,
markPreviousChaptersUnread,
markChaptersUnread,
- setShowChapterTitles,
refreshChapters,
updateChapter,
updateChapterProgress,
diff --git a/src/hooks/persisted/useNovelSettings.ts b/src/hooks/persisted/useNovelSettings.ts
new file mode 100644
index 0000000000..c7b8653e1d
--- /dev/null
+++ b/src/hooks/persisted/useNovelSettings.ts
@@ -0,0 +1,146 @@
+/* eslint-disable no-console */
+import { useMMKVObject } from 'react-native-mmkv';
+import {
+ ChapterFilterKey,
+ ChapterFilterPositiveKey,
+ ChapterOrderKey,
+} from '@database/constants';
+import { useCallback, useEffect, useMemo, useRef } from 'react';
+import { useAppSettings } from './useSettings';
+import { ChapterFilterObject, FilterStates } from '@database/utils/filter';
+import { useNovelContext } from '@screens/novel/NovelContext';
+
+// #region constants
+
+export const NOVEL_PAGE_INDEX_PREFIX = 'NOVEL_PAGE_INDEX_PREFIX';
+export const NOVEL_SETTINSG_PREFIX = 'NOVEL_SETTINGS';
+export const LAST_READ_PREFIX = 'LAST_READ_PREFIX';
+
+const defaultNovelSettings: NovelSettings = {
+ showChapterTitles: true,
+ filter: [],
+};
+
+// #endregion
+// #region types
+
+export interface NovelSettings {
+ sort?: ChapterOrderKey;
+ filter: ChapterFilterKey[];
+ showChapterTitles?: boolean;
+}
+
+// #endregion
+// #region definition useNovel
+
+export const useNovelSettings = () => {
+ const { novel } = useNovelContext();
+ const { defaultChapterSort } = useAppSettings();
+
+ const [ns, setNovelSettings] = useMMKVObject(
+ `${NOVEL_SETTINSG_PREFIX}_${novel?.pluginId}_${novel?.path}`,
+ );
+ const novelSettings = useMemo(
+ () => ({ ...defaultNovelSettings, ...ns }),
+ [ns],
+ );
+
+ const _sort: ChapterOrderKey = novelSettings.sort ?? defaultChapterSort;
+ const _filter: ChapterFilterKey[] = novelSettings.filter;
+ const filterManager = useRef(null);
+
+ // #endregion
+ // #region setters
+
+ const setChapterSort = useCallback(
+ async (sort?: ChapterOrderKey) => {
+ if (novel) {
+ setNovelSettings({
+ showChapterTitles: novelSettings?.showChapterTitles,
+ sort,
+ filter: _filter,
+ });
+ }
+ },
+ [novel, setNovelSettings, novelSettings?.showChapterTitles, _filter],
+ );
+ const setChapterFilter = useCallback(
+ async (filter?: ChapterFilterKey[]) => {
+ if (novel) {
+ setNovelSettings({
+ showChapterTitles: novelSettings?.showChapterTitles,
+ sort: _sort,
+ filter: filter ?? [],
+ });
+ }
+ },
+ [novel, setNovelSettings, novelSettings?.showChapterTitles, _sort],
+ );
+ useEffect(() => {
+ if (!filterManager.current) {
+ filterManager.current = new ChapterFilterObject(
+ _filter,
+ setChapterFilter,
+ );
+ }
+ }, [_filter, setChapterFilter]);
+
+ const cycleChapterFilter = useCallback(
+ (key: ChapterFilterPositiveKey) => {
+ filterManager.current?.cycle(key);
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
+ [_filter],
+ );
+
+ const setChapterFilterValue = useCallback(
+ (key: ChapterFilterPositiveKey, value: keyof FilterStates) => {
+ filterManager.current?.set(key, value);
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
+ [_filter],
+ );
+
+ const getChapterFilterState = useCallback(
+ (key: ChapterFilterPositiveKey) => {
+ return filterManager.current?.state(key) ?? false;
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
+ [_filter],
+ );
+
+ const getChapterFilter = useCallback(
+ (key: ChapterFilterPositiveKey) => filterManager.current?.get(key),
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ [_filter],
+ );
+
+ const setShowChapterTitles = useCallback(
+ (v: boolean) => {
+ setNovelSettings({ ...novelSettings, showChapterTitles: v });
+ },
+ [novelSettings, setNovelSettings],
+ );
+
+ // #endregion
+
+ return useMemo(
+ () => ({
+ ...novelSettings,
+ cycleChapterFilter,
+ setChapterFilter,
+ setChapterFilterValue,
+ getChapterFilterState,
+ getChapterFilter,
+ setChapterSort,
+ setShowChapterTitles,
+ }),
+ [
+ cycleChapterFilter,
+ getChapterFilter,
+ getChapterFilterState,
+ novelSettings,
+ setChapterFilter,
+ setChapterFilterValue,
+ setChapterSort,
+ setShowChapterTitles,
+ ],
+ );
+};
diff --git a/src/hooks/persisted/useSettings.ts b/src/hooks/persisted/useSettings.ts
index 396d167116..6835f906bd 100644
--- a/src/hooks/persisted/useSettings.ts
+++ b/src/hooks/persisted/useSettings.ts
@@ -1,10 +1,11 @@
+import { ChapterOrderKey } from '@database/constants';
import {
DisplayModes,
LibraryFilter,
LibrarySortOrder,
} from '@screens/library/constants/constants';
-import { useMMKVObject } from 'react-native-mmkv';
import { Voice } from 'expo-speech';
+import { useMMKVObject } from 'react-native-mmkv';
export const APP_SETTINGS = 'APP_SETTINGS';
export const BROWSE_SETTINGS = 'BROWSE_SETTINGS';
@@ -51,7 +52,7 @@ export interface AppSettings {
*/
hideBackdrop: boolean;
- defaultChapterSort: string;
+ defaultChapterSort: ChapterOrderKey;
}
export interface BrowseSettings {
@@ -159,7 +160,7 @@ const initialAppSettings: AppSettings = {
*/
hideBackdrop: false,
- defaultChapterSort: 'ORDER BY position ASC',
+ defaultChapterSort: 'positionAsc',
};
const initialBrowseSettings: BrowseSettings = {
diff --git a/src/navigators/types/index.ts b/src/navigators/types/index.ts
index 1b7932ccd9..b0fe4cd52e 100644
--- a/src/navigators/types/index.ts
+++ b/src/navigators/types/index.ts
@@ -98,10 +98,10 @@ export type ReaderStackParamList = {
name: string;
path: string;
pluginId: string;
- cover?: string;
- isLocal?: boolean;
+ cover: string | null;
+ isLocal?: boolean | null;
}
- | NovelInfo;
+ | Omit;
Chapter: {
novel: NovelInfo;
chapter: ChapterInfo;
diff --git a/src/plugins/pluginManager.ts b/src/plugins/pluginManager.ts
index b2114530f6..afc7d759c9 100644
--- a/src/plugins/pluginManager.ts
+++ b/src/plugins/pluginManager.ts
@@ -55,8 +55,8 @@ const initPlugin = (pluginId: string, rawCode: string) => {
const plugin: Plugin = Function(
'require',
'module',
- `const exports = module.exports = {};
- ${rawCode};
+ `const exports = module.exports = {};
+ ${rawCode};
return exports.default`,
)(_require, {});
@@ -141,7 +141,7 @@ const updatePlugin = async (plugin: PluginItem) => {
const fetchPlugins = async (): Promise => {
const allPlugins: PluginItem[] = [];
- const allRepositories = getRepositoriesFromDb();
+ const allRepositories = await getRepositoriesFromDb();
const repoPluginsRes = await Promise.allSettled(
allRepositories.map(({ url }) => fetch(url).then(res => res.json())),
diff --git a/src/screens/BrowseSourceScreen/components/FilterBottomSheet.tsx b/src/screens/BrowseSourceScreen/components/FilterBottomSheet.tsx
index ed628c4c8e..0a927c7263 100644
--- a/src/screens/BrowseSourceScreen/components/FilterBottomSheet.tsx
+++ b/src/screens/BrowseSourceScreen/components/FilterBottomSheet.tsx
@@ -396,7 +396,21 @@ const FilterBottomSheet: React.FC = ({
/>
}
- />
+ >
+ {/* 'filter' + item[0]}
+ renderItem={({ item }: { item: [string, Filters[string]] }) => (
+
+ )}
+ />*/}
+
);
};
diff --git a/src/screens/Categories/CategoriesScreen.tsx b/src/screens/Categories/CategoriesScreen.tsx
index 88d92f13b7..b64798bd6e 100644
--- a/src/screens/Categories/CategoriesScreen.tsx
+++ b/src/screens/Categories/CategoriesScreen.tsx
@@ -43,7 +43,7 @@ const CategoriesScreen = () => {
return [];
}
- return categories.filter(cat => cat.id !== 1);
+ return categories;
}, [categories]);
const onDragEnd = ({ data }: { data: ExtendedCategory[] }) => {
@@ -51,14 +51,10 @@ const CategoriesScreen = () => {
return;
}
- const systemCategories = categories.filter(cat => cat.id === 1);
-
- const updatedOrderCategories = [...systemCategories, ...data].map(
- (category, index) => ({
- ...category,
- sort: index,
- }),
- );
+ const updatedOrderCategories = data.map((category, index) => ({
+ ...category,
+ sort: index,
+ }));
setCategories(updatedOrderCategories);
updateCategoryOrderInDb(updatedOrderCategories);
diff --git a/src/screens/Categories/components/AddCategoryModal.tsx b/src/screens/Categories/components/AddCategoryModal.tsx
index 05d3f7a952..5baa2bf045 100644
--- a/src/screens/Categories/components/AddCategoryModal.tsx
+++ b/src/screens/Categories/components/AddCategoryModal.tsx
@@ -71,7 +71,7 @@ const AddCategoryModal: React.FC = ({
if (isEditMode && category) {
updateCategory(category?.id, categoryName);
} else {
- createCategory(categoryName);
+ await createCategory(categoryName);
}
finalize();
}
diff --git a/src/screens/Categories/components/CategoryCard.tsx b/src/screens/Categories/components/CategoryCard.tsx
index 9e90e50492..11835a58c0 100644
--- a/src/screens/Categories/components/CategoryCard.tsx
+++ b/src/screens/Categories/components/CategoryCard.tsx
@@ -1,6 +1,6 @@
import { StyleSheet, Text, View } from 'react-native';
import React from 'react';
-import { TouchableOpacity } from 'react-native-gesture-handler';
+import { Pressable } from 'react-native-gesture-handler';
import { Category } from '@database/types';
import { useTheme } from '@hooks/persisted';
@@ -49,10 +49,10 @@ const CategoryCard: React.FC = ({
]}
>
-
= ({
theme={theme}
padding={8}
/>
-
+
= ({
>
{category.name}
- {category.id === 2 && (
+ {category.id <= 2 && (
= ({
)}
-
+
+
-
+
+
diff --git a/src/screens/browse/components/AvailableTab.tsx b/src/screens/browse/components/AvailableTab.tsx
index 7b1b4badc2..1c252394b3 100644
--- a/src/screens/browse/components/AvailableTab.tsx
+++ b/src/screens/browse/components/AvailableTab.tsx
@@ -42,6 +42,7 @@ const AvailablePluginCard = ({
const textStyles = useAnimatedStyle(() => ({
lineHeight: ratio.value * 20,
}));
+
return (
{plugin.header ? (
diff --git a/src/screens/history/HistoryScreen.tsx b/src/screens/history/HistoryScreen.tsx
index 2bd94b3d91..0986e336b5 100644
--- a/src/screens/history/HistoryScreen.tsx
+++ b/src/screens/history/HistoryScreen.tsx
@@ -47,6 +47,7 @@ const HistoryScreen = ({ navigation }: HistoryScreenProps) => {
const groupHistoryByDate = (rawHistory: History[]) => {
const dateGroups = rawHistory.reduce>(
(groups, item) => {
+ if (!item.readTime) return groups;
const date = convertDateToISOString(item.readTime);
if (!groups[date]) {
diff --git a/src/screens/library/LibraryScreen.tsx b/src/screens/library/LibraryScreen.tsx
index a023421e3a..f1204dabde 100644
--- a/src/screens/library/LibraryScreen.tsx
+++ b/src/screens/library/LibraryScreen.tsx
@@ -440,7 +440,10 @@ const LibraryScreen = ({ navigation }: LibraryScreenProps) => {
routes: categories.map(category => ({
key: String(category.id),
title: category.name,
- ...category,
+ id: category.id,
+ name: category.name,
+ sort: category.sort ?? 0,
+ novelIds: category.novelIds,
})),
}),
[categories, index],
diff --git a/src/screens/library/hooks/useLibrary.ts b/src/screens/library/hooks/useLibrary.ts
index f3abcc190d..631700f5fb 100644
--- a/src/screens/library/hooks/useLibrary.ts
+++ b/src/screens/library/hooks/useLibrary.ts
@@ -43,15 +43,16 @@ export const useLibrary = (): UseLibraryReturnType => {
const [searchText, setSearchText] = useState('');
const refreshCategories = useCallback(async () => {
- const dbCategories = getCategoriesFromDb();
+ const dbCategories = await getCategoriesFromDb();
- const res = dbCategories.map(c => ({
+ const res = dbCategories.map((c, i) => ({
...c,
+ sort: c.sort ?? i,
novelIds: (c.novelIds ?? '').split(',').map(Number),
}));
- const filteredCategories = res.filter((cat, index) => {
- if (index !== 0) {
+ const filteredCategories = res.filter(cat => {
+ if (cat.id !== 1) {
return true;
}
diff --git a/src/screens/novel/NovelContext.tsx b/src/screens/novel/NovelContext.tsx
index 4ab2a5c949..2db08342a8 100644
--- a/src/screens/novel/NovelContext.tsx
+++ b/src/screens/novel/NovelContext.tsx
@@ -4,6 +4,7 @@ import { RouteProp } from '@react-navigation/native';
import { ReaderStackParamList } from '@navigators/types';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
import { useDeviceOrientation } from '@hooks/index';
+import { NovelInfo } from '@database/types';
type NovelContextType = ReturnType & {
navigationBarHeight: number;
@@ -30,7 +31,7 @@ export function NovelContextProvider({
'novel' in route.params ? route.params.novel : route.params;
const novelHookContent = useNovel(
- 'id' in route.params ? route.params : path,
+ 'id' in route.params ? (route.params as NovelInfo) : path,
pluginId,
);
diff --git a/src/screens/novel/NovelScreen.tsx b/src/screens/novel/NovelScreen.tsx
index 73b10a6fda..c04f037f6d 100644
--- a/src/screens/novel/NovelScreen.tsx
+++ b/src/screens/novel/NovelScreen.tsx
@@ -286,7 +286,7 @@ const Novel = ({ route, navigation }: NovelScreenProps) => {
showJumpToChapterModal={showJumpToChapterModal}
shareNovel={shareNovel}
theme={theme}
- isLocal={novel?.isLocal ?? route.params?.isLocal}
+ isLocal={novel?.isLocal ?? route.params?.isLocal ?? false}
goBack={navigation.goBack}
headerOpacity={headerOpacity}
/>
diff --git a/src/screens/novel/components/ChapterItem.tsx b/src/screens/novel/components/ChapterItem.tsx
index b9a6b068af..0f6652dda6 100644
--- a/src/screens/novel/components/ChapterItem.tsx
+++ b/src/screens/novel/components/ChapterItem.tsx
@@ -45,7 +45,7 @@ const ChapterItem: React.FC = ({
const { id, name, unread, releaseTime, bookmark, chapterNumber, progress } =
chapter;
- isBookmarked ??= bookmark;
+ isBookmarked ??= bookmark ?? false;
const handlePress = useCallback(
() => onSelectPress(chapter),
@@ -83,8 +83,8 @@ const ChapterItem: React.FC = ({
!unread
? theme.outline
: bookmark
- ? theme.primary
- : theme.onSurfaceVariant,
+ ? theme.primary
+ : theme.onSurfaceVariant,
[unread, bookmark, theme.outline, theme.primary, theme.onSurfaceVariant],
);
@@ -145,10 +145,7 @@ const ChapterItem: React.FC = ({
{releaseTime && !isUpdateCard ? (
{releaseTime}
@@ -176,7 +173,7 @@ const ChapterItem: React.FC = ({
{!isLocal ? (
;
- sortAndFilterChapters: (sort?: string, filter?: string) => Promise;
- sort: string;
- filter: string;
theme: ThemeColors;
- showChapterTitles: boolean;
- setShowChapterTitles: (v: boolean) => void;
}
const ChaptersSettingsSheet = ({
bottomSheetRef,
- sortAndFilterChapters,
- sort,
- filter,
theme,
- showChapterTitles,
- setShowChapterTitles,
}: ChaptersSettingsSheetProps) => {
- const { left, right } = useSafeAreaInsets();
- const sortChapters = useCallback(
- (val: string) => sortAndFilterChapters(val, filter),
- [filter, sortAndFilterChapters],
- );
+ const {
+ setChapterSort,
+ getChapterFilterState,
+ cycleChapterFilter,
+ setShowChapterTitles,
+ sort,
+ showChapterTitles,
+ } = useNovelSettings();
- const filterChapters = useCallback(
- (val: string) => sortAndFilterChapters(sort, val),
- [sort, sortAndFilterChapters],
- );
+ const { left, right } = useSafeAreaInsets();
const FirstRoute = useCallback(
() => (
@@ -50,62 +41,30 @@ const ChaptersSettingsSheet = ({
{
- if (filter.match('AND isDownloaded=1')) {
- filterChapters(
- filter.replace(' AND isDownloaded=1', ' AND isDownloaded=0'),
- );
- } else if (filter.match('AND isDownloaded=0')) {
- filterChapters(filter.replace(' AND isDownloaded=0', ''));
- } else {
- filterChapters(filter + ' AND isDownloaded=1');
- }
+ cycleChapterFilter('downloaded');
}}
/>
{
- if (filter.match(' AND `unread`=1')) {
- filterChapters(
- filter.replace(' AND `unread`=1', ' AND `unread`=0'),
- );
- } else if (filter.match(' AND `unread`=0')) {
- filterChapters(filter.replace(' AND `unread`=0', ''));
- } else {
- filterChapters(filter + ' AND `unread`=1');
- }
+ cycleChapterFilter('read');
}}
/>
{
- filterChapters(
- filter.match('AND bookmark=1')
- ? filter.replace(' AND bookmark=1', '')
- : filter + ' AND bookmark=1',
- );
+ cycleChapterFilter('bookmarked');
}}
/>
),
- [filter, filterChapters, theme],
+ [cycleChapterFilter, getChapterFilterState, theme],
);
const SecondRoute = useCallback(
@@ -114,45 +73,45 @@ const ChaptersSettingsSheet = ({
- sort === 'ORDER BY position ASC'
- ? sortChapters('ORDER BY position DESC')
- : sortChapters('ORDER BY position ASC')
+ sort === 'positionAsc'
+ ? setChapterSort('positionDesc')
+ : setChapterSort('positionAsc')
}
theme={theme}
/>
- sort === 'ORDER BY name ASC'
- ? sortChapters('ORDER BY name DESC')
- : sortChapters('ORDER BY name ASC')
+ sort === 'nameAsc'
+ ? setChapterSort('nameDesc')
+ : setChapterSort('nameAsc')
}
theme={theme}
/>
),
- [sort, sortChapters, theme],
+ [sort, setChapterSort, theme],
);
const ThirdRoute = useCallback(
() => (
setShowChapterTitles(true)}
theme={theme}
diff --git a/src/screens/novel/components/NovelScreenList.tsx b/src/screens/novel/components/NovelScreenList.tsx
index 53106e1134..b68e86c967 100644
--- a/src/screens/novel/components/NovelScreenList.tsx
+++ b/src/screens/novel/components/NovelScreenList.tsx
@@ -47,7 +47,7 @@ type NovelScreenListProps = {
name: string;
path: string;
pluginId: string;
- cover?: string;
+ cover?: string | null;
};
};
@@ -102,7 +102,7 @@ const NovelScreenList = ({
const {
sort = defaultChapterSort,
- filter = '',
+ filter,
showChapterTitles = false,
} = novelSettings;
@@ -269,7 +269,7 @@ const NovelScreenList = ({
async (page: string) => {
if (novel.id !== 'NO_ID') {
setUpdating(true);
- updateNovelPage(pluginId, novel.path, novel.id, page, {
+ updateNovelPage(pluginId, novel.path, novel.path, novel.id, page, {
downloadNewChapters,
})
.then(() => getNovel())
@@ -497,7 +497,7 @@ const NovelScreenList = ({
chapter={item}
isDownloading={downloadingChapterIds.has(item.id)}
isBookmarked={!!item.bookmark}
- isLocal={novel.isLocal}
+ isLocal={novel.isLocal ?? false}
theme={theme}
showChapterTitles={showChapterTitles}
isSelected={selectedIds.has(item.id)}
diff --git a/src/screens/novel/components/SetCategoriesModal.tsx b/src/screens/novel/components/SetCategoriesModal.tsx
index 9d6c38b0f0..7c4c1eedab 100644
--- a/src/screens/novel/components/SetCategoriesModal.tsx
+++ b/src/screens/novel/components/SetCategoriesModal.tsx
@@ -36,7 +36,7 @@ const SetCategoryModal: React.FC = ({
const [categories = [], setCategories] = useState();
const getCategories = useCallback(async () => {
- const res = getCategoriesWithCount(novelIds);
+ const res = await getCategoriesWithCount(novelIds);
setCategories(res);
setSelectedCategories(res.filter(c => c.novelsCount));
}, [novelIds]);
diff --git a/src/screens/reader/ReaderScreen.tsx b/src/screens/reader/ReaderScreen.tsx
index 4f5ef81cc2..30de4f444c 100644
--- a/src/screens/reader/ReaderScreen.tsx
+++ b/src/screens/reader/ReaderScreen.tsx
@@ -68,10 +68,10 @@ export const ChapterContent = ({
const readerSheetRef = useRef(null);
const theme = useTheme();
const { pageReader = false, keepScreenOn } = useChapterGeneralSettings();
- const [bookmarked, setBookmarked] = useState(chapter.bookmark);
+ const [bookmarked, setBookmarked] = useState(chapter.bookmark ?? false);
useEffect(() => {
- setBookmarked(chapter.bookmark);
+ setBookmarked(chapter.bookmark ?? false);
}, [chapter]);
const { hidden, loading, error, webViewRef, hideHeader, refetch } =
diff --git a/src/screens/reader/components/ChapterDrawer/index.tsx b/src/screens/reader/components/ChapterDrawer/index.tsx
index 90211f1f91..7fd7e48b43 100644
--- a/src/screens/reader/components/ChapterDrawer/index.tsx
+++ b/src/screens/reader/components/ChapterDrawer/index.tsx
@@ -48,7 +48,7 @@ const ChapterDrawer = () => {
const styles = createStylesheet(theme, insets);
const { sort = defaultChapterSort } = novelSettings;
- const listAscending = sort === 'ORDER BY position ASC';
+ const listAscending = sort.endsWith('Asc');
const defaultButtonLayout: ButtonsProperties = useMemo(
() => ({
@@ -65,7 +65,7 @@ const ChapterDrawer = () => {
);
useEffect(() => {
- let pageIndex = pages.indexOf(chapter.page);
+ let pageIndex = pages.indexOf(chapter.page ?? '');
if (pageIndex === -1) {
pageIndex = 0;
}
diff --git a/src/screens/reader/hooks/useChapter.ts b/src/screens/reader/hooks/useChapter.ts
index 3a13a109f2..1ac5716e10 100644
--- a/src/screens/reader/hooks/useChapter.ts
+++ b/src/screens/reader/hooks/useChapter.ts
@@ -129,8 +129,8 @@ export default function useChapter(
const text = cachedText ?? loadChapterText(chap.id, chap.path);
const [nextChapResult, prevChapResult, awaitedText] = await Promise.all(
[
- getNextChapter(chap.novelId, chap.position!, chap.page),
- getPrevChapter(chap.novelId, chap.position!, chap.page),
+ getNextChapter(chap.novelId, chap.position!, chap.page ?? ''),
+ getPrevChapter(chap.novelId, chap.position!, chap.page ?? ''),
text,
],
);
@@ -162,7 +162,7 @@ export default function useChapter(
nextChap = await getNextChapter(
chap.novelId,
chap.position!,
- chap.page,
+ chap.page ?? '',
);
} catch {}
}
@@ -184,7 +184,7 @@ export default function useChapter(
prevChap = await getPrevChapter(
chap.novelId,
chap.position!,
- chap.page,
+ chap.page ?? '',
);
} catch {}
}
diff --git a/src/screens/settings/SettingsAdvancedScreen.tsx b/src/screens/settings/SettingsAdvancedScreen.tsx
index a4de67eb48..651dbacdab 100644
--- a/src/screens/settings/SettingsAdvancedScreen.tsx
+++ b/src/screens/settings/SettingsAdvancedScreen.tsx
@@ -20,7 +20,6 @@ import { ScrollView, StyleSheet, View } from 'react-native';
import { getUserAgentSync } from 'react-native-device-info';
import CookieManager from '@react-native-cookies/cookies';
import { store } from '@plugins/helpers/storage';
-import { recreateDatabaseIndexes } from '@database/db';
const AdvancedSettings = ({ navigation }: AdvancedSettingsScreenProps) => {
const theme = useTheme();
@@ -55,12 +54,6 @@ const AdvancedSettings = ({ navigation }: AdvancedSettingsScreenProps) => {
setFalse: hideUserAgentModal,
} = useBoolean();
- const {
- value: recreateDatabaseIndexesDialog,
- setTrue: showRecreateDBIndexDialog,
- setFalse: hideRecreateDBIndexDialog,
- } = useBoolean();
-
return (
{
onPress={showClearDatabaseDialog}
theme={theme}
/>
-
{
onDismiss={hideDeleteReadChaptersDialog}
theme={theme}
/>
- {
- recreateDatabaseIndexes();
- showToast(
- getString('advancedSettingsScreen.recreateDBIndexesToast'),
- );
- }}
- onDismiss={hideRecreateDBIndexDialog}
- theme={theme}
- />
= ({ navigation }) => {
(
- getRepositoriesFromDb(),
- );
- const getRepositories = () => {
- setRepositories(getRepositoriesFromDb());
- };
+ const repositories = useLiveQuery(dbManager.select().from(repositorySchema), [
+ { table: 'Repository' },
+ ]);
const {
value: addRepositoryModalVisible,
@@ -46,7 +45,7 @@ const SettingsBrowseScreen = ({
} = useBoolean();
const upsertRepository = useCallback(
- (repositoryUrl: string, repository?: Repository) => {
+ async (repositoryUrl: string, repository?: Repository) => {
if (
!new RegExp(/https?:\/\/(.*)plugins\.min\.json/).test(repositoryUrl)
) {
@@ -54,15 +53,14 @@ const SettingsBrowseScreen = ({
return;
}
- if (isRepoUrlDuplicated(repositoryUrl)) {
+ if (await isRepoUrlDuplicated(repositoryUrl)) {
showToast('A respository with this url already exists!');
} else {
if (repository) {
- updateRepository(repository.id, repositoryUrl);
+ await updateRepository(repository.id, repositoryUrl);
} else {
- createRepository(repositoryUrl);
+ await createRepository(repositoryUrl);
}
- getRepositories();
refreshPlugins();
}
},
@@ -102,7 +100,7 @@ const SettingsBrowseScreen = ({
renderItem={({ item }) => (
{}}
upsertRepository={upsertRepository}
/>
)}
diff --git a/src/screens/settings/SettingsRepositoryScreen/components/DeleteRepositoryModal.tsx b/src/screens/settings/SettingsRepositoryScreen/components/DeleteRepositoryModal.tsx
index f667dae8c0..d1224e9f12 100644
--- a/src/screens/settings/SettingsRepositoryScreen/components/DeleteRepositoryModal.tsx
+++ b/src/screens/settings/SettingsRepositoryScreen/components/DeleteRepositoryModal.tsx
@@ -36,8 +36,8 @@ const DeleteRepositoryModal: React.FC = ({