refactor(mukke): replace custom sidebar with shared PillNavigation

Replaces the custom sidebar layout with PillNavigation, SplitPaneContainer,
and app switcher from shared packages. Adds theme variants, keyboard
shortcuts (Ctrl+1-5), and consistent bottom-pill navigation matching
other apps like calendar and contacts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-19 15:49:59 +01:00
parent 3e7fd8fd35
commit 1d1489273d
3 changed files with 335 additions and 396 deletions

View file

@ -32,18 +32,19 @@
"vite": "^6.0.0"
},
"dependencies": {
"@mukke/shared": "workspace:*",
"@manacore/shared-api-client": "workspace:*",
"@manacore/shared-auth": "workspace:*",
"@manacore/shared-auth-ui": "workspace:*",
"@manacore/shared-branding": "workspace:*",
"@manacore/shared-i18n": "workspace:*",
"@manacore/shared-icons": "workspace:*",
"@manacore/shared-splitscreen": "workspace:^",
"@manacore/shared-stores": "workspace:*",
"@manacore/shared-tailwind": "workspace:*",
"@manacore/shared-theme": "workspace:*",
"@manacore/shared-theme-ui": "workspace:*",
"@manacore/shared-ui": "workspace:*",
"@mukke/shared": "workspace:*",
"wavesurfer.js": "^7.8.0"
},
"type": "module"

View file

@ -1,192 +1,206 @@
<script lang="ts">
import { page } from '$app/stores';
import { goto } from '$app/navigation';
import { page } from '$app/stores';
import { onMount } from 'svelte';
import { PillNavigation } from '@manacore/shared-ui';
import type { PillNavItem, PillDropdownItem } from '@manacore/shared-ui';
import {
SplitPaneContainer,
setSplitPanelContext,
DEFAULT_APPS,
} from '@manacore/shared-splitscreen';
import { getPillAppItems } from '@manacore/shared-branding';
import {
THEME_DEFINITIONS,
DEFAULT_THEME_VARIANTS,
EXTENDED_THEME_VARIANTS,
} from '@manacore/shared-theme';
import type { ThemeVariant } from '@manacore/shared-theme';
import { theme } from '$lib/stores/theme.svelte';
import { authStore } from '$lib/stores/auth.svelte';
import MiniPlayer from '$lib/components/MiniPlayer.svelte';
import FullPlayer from '$lib/components/FullPlayer.svelte';
import QueuePanel from '$lib/components/QueuePanel.svelte';
let { children } = $props();
let sidebarOpen = $state(false);
$effect(() => {
if (authStore.initialized && !authStore.isAuthenticated) {
goto('/login');
}
});
// App switcher items
const appItems = getPillAppItems('mukke' as any);
const navItems = [
// Split-Panel Store
const splitPanel = setSplitPanelContext('mukke' as any, DEFAULT_APPS);
function handleOpenInPanel(appId: string, url: string) {
splitPanel.openPanel(appId);
}
// Theme
let isDark = $derived(theme.isDark);
let themeVariantItems = $derived<PillDropdownItem[]>([
...DEFAULT_THEME_VARIANTS.map((variant) => ({
id: variant,
label: THEME_DEFINITIONS[variant].label,
icon: THEME_DEFINITIONS[variant].icon,
onClick: () => theme.setVariant(variant),
active: theme.variant === variant,
})),
{
label: 'Dashboard',
href: '/dashboard',
icon: 'M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6',
},
{
label: 'Library',
href: '/library',
icon: 'M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3',
},
{
label: 'Search',
href: '/search',
icon: 'M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z',
},
{
label: 'Playlists',
href: '/playlists',
icon: 'M4 6h16M4 10h16M4 14h16M4 18h16',
},
{
label: 'Editor Projects',
href: '/projects',
icon: 'M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z',
},
{
label: 'Upload',
href: '/upload',
icon: 'M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12',
id: 'all-themes',
label: 'All Themes',
icon: 'palette',
onClick: () => goto('/themes'),
active: false,
},
]);
let currentThemeVariantLabel = $derived(THEME_DEFINITIONS[theme.variant].label);
// User
let userEmail = $derived(authStore.user?.email || 'Menu');
// Navigation items
const baseNavItems: PillNavItem[] = [
{ href: '/library', label: 'Library', icon: 'music-notes' },
{ href: '/playlists', label: 'Playlists', icon: 'playlist' },
{ href: '/projects', label: 'Editor', icon: 'waveform' },
{ href: '/upload', label: 'Upload', icon: 'upload' },
{ href: '/settings', label: 'Settings', icon: 'settings' },
];
function isActive(href: string, pathname: string): boolean {
if (href === '/') return pathname === '/';
return pathname.startsWith(href);
const navItems = $derived(baseNavItems);
// Keyboard shortcuts (Ctrl+1-5)
const navRoutes = baseNavItems.map((item) => item.href);
function handleKeydown(event: KeyboardEvent) {
const target = event.target as HTMLElement;
if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {
return;
}
if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey) {
const num = parseInt(event.key);
if (num >= 1 && num <= navRoutes.length) {
event.preventDefault();
const route = navRoutes[num - 1];
if (route) goto(route);
}
}
}
function closeSidebar() {
sidebarOpen = false;
function handleToggleTheme() {
theme.toggleMode();
}
function handleThemeModeChange(mode: 'light' | 'dark' | 'system') {
theme.setMode(mode);
}
async function handleLogout() {
await authStore.signOut();
goto('/login');
}
onMount(async () => {
await authStore.initialize();
if (!authStore.isAuthenticated) {
goto('/login');
return;
}
splitPanel.initialize();
});
</script>
<svelte:window onkeydown={handleKeydown} />
{#if !authStore.isAuthenticated}
<div class="min-h-screen flex items-center justify-center">
<div class="min-h-screen flex items-center justify-center bg-background">
<div
class="w-8 h-8 border-4 border-primary border-t-transparent rounded-full animate-spin"
></div>
</div>
{:else}
<div class="flex h-screen overflow-hidden">
<!-- Mobile overlay -->
{#if sidebarOpen}
<div
class="fixed inset-0 bg-black/50 z-30 lg:hidden"
onclick={closeSidebar}
role="presentation"
></div>
{/if}
<SplitPaneContainer>
<div class="layout-container">
<a
href="#main-content"
class="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[100] focus:rounded-lg focus:bg-primary focus:px-4 focus:py-2 focus:text-white"
>
Skip to content
</a>
<!-- Sidebar -->
<aside
class="fixed inset-y-0 left-0 z-40 w-64 bg-surface border-r border-border flex flex-col transition-transform duration-200 lg:static lg:translate-x-0 {sidebarOpen
? 'translate-x-0'
: '-translate-x-full'}"
>
<!-- Logo -->
<div class="flex items-center justify-between h-16 px-4 border-b border-border">
<a href="/" class="text-xl font-bold text-primary">Mukke</a>
<button
class="p-1 text-foreground-secondary hover:text-foreground lg:hidden"
onclick={closeSidebar}
>
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M6 18L18 6M6 6l12 12"
/>
</svg>
</button>
</div>
<PillNavigation
items={navItems}
currentPath={$page.url.pathname}
appName="Mukke"
homeRoute="/library"
onToggleTheme={handleToggleTheme}
{isDark}
showThemeToggle={true}
showThemeVariants={true}
{themeVariantItems}
{currentThemeVariantLabel}
themeMode={theme.mode}
onThemeModeChange={handleThemeModeChange}
showLogout={true}
onLogout={handleLogout}
loginHref="/login"
primaryColor="#f97316"
showAppSwitcher={true}
{appItems}
{userEmail}
settingsHref="/settings"
onOpenInPanel={handleOpenInPanel}
ariaLabel="Main navigation"
/>
<!-- Navigation -->
<nav class="flex-1 px-3 py-4 space-y-1 overflow-y-auto">
{#each navItems as item}
<a
href={item.href}
onclick={closeSidebar}
class="flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors {isActive(
item.href,
$page.url.pathname
)
? 'bg-primary text-white'
: 'text-foreground-secondary hover:text-foreground hover:bg-background'}"
>
<svg
class="w-5 h-5 flex-shrink-0"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d={item.icon} />
</svg>
{item.label}
</a>
{/each}
</nav>
<!-- User info -->
<div class="border-t border-border p-4">
<div class="flex items-center gap-3">
<div
class="w-8 h-8 rounded-full bg-primary/20 text-primary flex items-center justify-center text-sm font-medium"
>
{authStore.user?.email?.[0]?.toUpperCase() ?? '?'}
</div>
<div class="flex-1 min-w-0">
<p class="text-sm font-medium truncate">{authStore.user?.email ?? ''}</p>
</div>
<button
onclick={() => authStore.signOut()}
class="p-1.5 text-foreground-secondary hover:text-foreground transition-colors"
title="Logout"
>
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"
/>
</svg>
</button>
<!-- Main Content -->
<main id="main-content" class="main-content bg-background">
<div class="content-wrapper">
{@render children()}
</div>
</div>
</aside>
<!-- Main content -->
<div class="flex-1 flex flex-col min-w-0">
<!-- Mobile header -->
<header class="h-16 border-b border-border flex items-center px-4 lg:hidden">
<button
class="p-1.5 text-foreground-secondary hover:text-foreground"
onclick={() => (sidebarOpen = true)}
>
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M4 6h16M4 12h16M4 18h16"
/>
</svg>
</button>
<span class="ml-3 text-lg font-bold text-primary">Mukke</span>
</header>
<!-- Page content -->
<main class="flex-1 overflow-y-auto">
{@render children()}
</main>
<!-- MiniPlayer -->
<!-- Player components -->
<MiniPlayer />
<FullPlayer />
<QueuePanel />
</div>
</div>
<!-- Full Player Overlay -->
<FullPlayer />
<!-- Queue Panel -->
<QueuePanel />
</SplitPaneContainer>
{/if}
<style>
.layout-container {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.main-content {
flex: 1;
transition: all 300ms ease;
padding-bottom: calc(130px + env(safe-area-inset-bottom));
}
@media (max-width: 768px) {
.main-content {
padding-bottom: calc(140px + env(safe-area-inset-bottom));
}
}
.content-wrapper {
padding: 1rem;
}
@media (min-width: 640px) {
.content-wrapper {
padding: 1.5rem;
}
}
@media (min-width: 1024px) {
.content-wrapper {
padding: 2rem;
}
}
</style>

396
pnpm-lock.yaml generated
View file

@ -2889,6 +2889,9 @@ importers:
'@manacore/shared-icons':
specifier: workspace:*
version: link:../../../../packages/shared-icons
'@manacore/shared-splitscreen':
specifier: workspace:^
version: link:../../../../packages/shared-splitscreen
'@manacore/shared-stores':
specifier: workspace:*
version: link:../../../../packages/shared-stores
@ -5225,7 +5228,7 @@ importers:
devDependencies:
'@nestjs/cli':
specifier: ^10.4.9
version: 10.4.9(esbuild@0.19.12)
version: 10.4.9(esbuild@0.27.0)
'@nestjs/schematics':
specifier: ^10.2.3
version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3)
@ -5246,10 +5249,10 @@ importers:
version: 0.30.6
jest:
specifier: ^30.2.0
version: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
version: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
ts-jest:
specifier: ^29.2.5
version: 29.4.5(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@30.3.0)(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(typescript@5.9.3)
version: 29.4.5(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.27.0)(jest-util@30.3.0)(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(typescript@5.9.3)
tsx:
specifier: ^4.19.4
version: 4.20.6
@ -30462,7 +30465,7 @@ snapshots:
ws: 8.18.3
zod: 3.25.76
optionalDependencies:
expo-router: 55.0.5(x7lnlfjdazvti7gnhecex443py)
expo-router: 55.0.5(tkph4mqwn7yyg5tlp6kukooce4)
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
transitivePeerDependencies:
- '@expo/dom-webview'
@ -30476,6 +30479,7 @@ snapshots:
- supports-color
- typescript
- utf-8-validate
optional: true
'@expo/code-signing-certificates@0.0.5':
dependencies:
@ -30721,6 +30725,7 @@ snapshots:
optionalDependencies:
react: 19.2.4
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
optional: true
'@expo/dom-webview@55.0.3(expo@52.0.47)(react-native@0.76.3(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.27)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)':
dependencies:
@ -30796,6 +30801,7 @@ snapshots:
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.4(react@19.2.4))(react-native-webview@13.12.2(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
react: 19.2.4
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
optional: true
'@expo/env@0.4.2':
dependencies:
@ -30977,6 +30983,7 @@ snapshots:
react: 19.2.4
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
stacktrace-parser: 0.1.11
optional: true
'@expo/mcp-tunnel@0.0.8':
dependencies:
@ -31191,7 +31198,7 @@ snapshots:
postcss: 8.4.49
resolve-from: 5.0.0
optionalDependencies:
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.4(react@19.2.4))(react-native-webview@13.12.2(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.0(react@19.2.0))(react-native-webview@13.12.2(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0))(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
transitivePeerDependencies:
- bufferutil
- supports-color
@ -31515,7 +31522,7 @@ snapshots:
'@expo/json-file': 10.0.12
'@react-native/normalize-colors': 0.83.2
debug: 4.4.3
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.4(react@19.2.4))(react-native-webview@13.12.2(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.0(react@19.2.0))(react-native-webview@13.12.2(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0))(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
resolve-from: 5.0.0
semver: 7.7.3
xml2js: 0.6.0
@ -31585,10 +31592,11 @@ snapshots:
react: 19.2.4
optionalDependencies:
'@expo/metro-runtime': 6.1.2(expo@55.0.5)(react-dom@19.2.4(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
expo-router: 55.0.5(x7lnlfjdazvti7gnhecex443py)
expo-router: 55.0.5(tkph4mqwn7yyg5tlp6kukooce4)
react-dom: 19.2.4(react@19.2.4)
transitivePeerDependencies:
- supports-color
optional: true
'@expo/rudder-sdk-node@1.1.1(encoding@0.1.13)':
dependencies:
@ -31711,6 +31719,7 @@ snapshots:
expo-font: 55.0.4(expo@55.0.5)(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
react: 19.2.4
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
optional: true
'@expo/ws-tunnel@1.0.6': {}
@ -32356,42 +32365,6 @@ snapshots:
- supports-color
- ts-node
'@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))':
dependencies:
'@jest/console': 30.2.0
'@jest/pattern': 30.0.1
'@jest/reporters': 30.2.0
'@jest/test-result': 30.2.0
'@jest/transform': 30.2.0
'@jest/types': 30.2.0
'@types/node': 22.19.1
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 4.3.1
exit-x: 0.2.2
graceful-fs: 4.2.11
jest-changed-files: 30.2.0
jest-config: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest-haste-map: 30.2.0
jest-message-util: 30.2.0
jest-regex-util: 30.0.1
jest-resolve: 30.2.0
jest-resolve-dependencies: 30.2.0
jest-runner: 30.2.0
jest-runtime: 30.2.0
jest-snapshot: 30.2.0
jest-util: 30.2.0
jest-validate: 30.2.0
jest-watcher: 30.2.0
micromatch: 4.0.8
pretty-format: 30.2.0
slash: 3.0.0
transitivePeerDependencies:
- babel-plugin-macros
- esbuild-register
- supports-color
- ts-node
'@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))':
dependencies:
'@jest/console': 30.2.0
@ -32428,6 +32401,42 @@ snapshots:
- supports-color
- ts-node
'@jest/core@30.3.0(esbuild-register@3.6.0(esbuild@0.19.12))':
dependencies:
'@jest/console': 30.3.0
'@jest/pattern': 30.0.1
'@jest/reporters': 30.3.0
'@jest/test-result': 30.3.0
'@jest/transform': 30.3.0
'@jest/types': 30.3.0
'@types/node': 22.19.1
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 4.3.1
exit-x: 0.2.2
graceful-fs: 4.2.11
jest-changed-files: 30.3.0
jest-config: 30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))
jest-haste-map: 30.3.0
jest-message-util: 30.3.0
jest-regex-util: 30.0.1
jest-resolve: 30.3.0
jest-resolve-dependencies: 30.3.0
jest-runner: 30.3.0
jest-runtime: 30.3.0
jest-snapshot: 30.3.0
jest-util: 30.3.0
jest-validate: 30.3.0
jest-watcher: 30.3.0
pretty-format: 30.3.0
slash: 3.0.0
transitivePeerDependencies:
- babel-plugin-macros
- esbuild-register
- supports-color
- ts-node
optional: true
'@jest/core@30.3.0(esbuild-register@3.6.0(esbuild@0.27.0))':
dependencies:
'@jest/console': 30.3.0
@ -33082,32 +33091,6 @@ snapshots:
- uglify-js
- webpack-cli
'@nestjs/cli@10.4.9(esbuild@0.19.12)':
dependencies:
'@angular-devkit/core': 17.3.11(chokidar@3.6.0)
'@angular-devkit/schematics': 17.3.11(chokidar@3.6.0)
'@angular-devkit/schematics-cli': 17.3.11(chokidar@3.6.0)
'@nestjs/schematics': 10.2.3(chokidar@3.6.0)(typescript@5.7.2)
chalk: 4.1.2
chokidar: 3.6.0
cli-table3: 0.6.5
commander: 4.1.1
fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.7.2)(webpack@5.97.1(esbuild@0.19.12))
glob: 10.4.5
inquirer: 8.2.6
node-emoji: 1.11.0
ora: 5.4.1
tree-kill: 1.2.2
tsconfig-paths: 4.2.0
tsconfig-paths-webpack-plugin: 4.2.0
typescript: 5.7.2
webpack: 5.97.1(esbuild@0.19.12)
webpack-node-externals: 3.0.0
transitivePeerDependencies:
- esbuild
- uglify-js
- webpack-cli
'@nestjs/cli@10.4.9(esbuild@0.27.0)':
dependencies:
'@angular-devkit/core': 17.3.11(chokidar@3.6.0)
@ -35512,7 +35495,8 @@ snapshots:
'@react-native/assets-registry@0.83.2': {}
'@react-native/assets-registry@0.84.1': {}
'@react-native/assets-registry@0.84.1':
optional: true
'@react-native/babel-plugin-codegen@0.76.3(@babel/preset-env@7.28.5(@babel/core@7.28.5))':
dependencies:
@ -35885,6 +35869,7 @@ snapshots:
nullthrows: 1.1.1
tinyglobby: 0.2.15
yargs: 17.7.2
optional: true
'@react-native/community-cli-plugin@0.76.3(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(encoding@0.1.13)':
dependencies:
@ -36004,6 +35989,7 @@ snapshots:
- bufferutil
- supports-color
- utf-8-validate
optional: true
'@react-native/debugger-frontend@0.76.3': {}
@ -36017,7 +36003,8 @@ snapshots:
'@react-native/debugger-frontend@0.83.2': {}
'@react-native/debugger-frontend@0.84.1': {}
'@react-native/debugger-frontend@0.84.1':
optional: true
'@react-native/debugger-shell@0.83.2':
dependencies:
@ -36031,6 +36018,7 @@ snapshots:
fb-dotslash: 0.5.8
transitivePeerDependencies:
- supports-color
optional: true
'@react-native/dev-middleware@0.76.3':
dependencies:
@ -36161,6 +36149,7 @@ snapshots:
- bufferutil
- supports-color
- utf-8-validate
optional: true
'@react-native/gradle-plugin@0.76.3': {}
@ -36174,7 +36163,8 @@ snapshots:
'@react-native/gradle-plugin@0.83.2': {}
'@react-native/gradle-plugin@0.84.1': {}
'@react-native/gradle-plugin@0.84.1':
optional: true
'@react-native/js-polyfills@0.76.3': {}
@ -36188,7 +36178,8 @@ snapshots:
'@react-native/js-polyfills@0.83.2': {}
'@react-native/js-polyfills@0.84.1': {}
'@react-native/js-polyfills@0.84.1':
optional: true
'@react-native/metro-babel-transformer@0.76.3(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))':
dependencies:
@ -36236,7 +36227,8 @@ snapshots:
'@react-native/normalize-colors@0.83.2': {}
'@react-native/normalize-colors@0.84.1': {}
'@react-native/normalize-colors@0.84.1':
optional: true
'@react-native/virtualized-lists@0.76.3(@types/react@18.3.27)(react-native@0.76.3(@babel/core@7.28.5)(@babel/preset-env@7.28.5(@babel/core@7.28.5))(@types/react@18.3.27)(encoding@0.1.13)(react@18.3.1))(react@18.3.1)':
dependencies:
@ -36354,6 +36346,7 @@ snapshots:
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.14
optional: true
'@react-navigation/bottom-tabs@7.15.5(@react-navigation/native@7.1.33(react-native@0.81.4(@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.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
@ -38725,19 +38718,6 @@ snapshots:
picocolors: 1.1.1
redent: 3.0.0
'@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react-test-renderer@19.1.0(react@19.2.4))(react@19.2.4)':
dependencies:
jest-matcher-utils: 30.3.0
picocolors: 1.1.1
pretty-format: 30.3.0
react: 19.2.4
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
react-test-renderer: 19.1.0(react@19.2.4)
redent: 3.0.0
optionalDependencies:
jest: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
optional: true
'@testing-library/react-native@13.3.3(jest@30.3.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
jest-matcher-utils: 30.3.0
@ -38751,6 +38731,19 @@ snapshots:
jest: 30.3.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0))
optional: true
'@testing-library/react-native@13.3.3(jest@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12)))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react-test-renderer@19.1.0(react@19.2.4))(react@19.2.4)':
dependencies:
jest-matcher-utils: 30.3.0
picocolors: 1.1.1
pretty-format: 30.3.0
react: 19.2.4
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
react-test-renderer: 19.1.0(react@19.2.4)
redent: 3.0.0
optionalDependencies:
jest: 30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))
optional: true
'@testing-library/react-native@13.3.3(jest@30.3.0(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
jest-matcher-utils: 30.3.0
@ -41608,7 +41601,7 @@ snapshots:
resolve-from: 5.0.0
optionalDependencies:
'@babel/runtime': 7.28.4
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.4(react@19.2.4))(react-native-webview@13.12.2(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.0(react@19.2.0))(react-native-webview@13.12.2(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0))(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)(typescript@5.9.3)
transitivePeerDependencies:
- '@babel/core'
- supports-color
@ -44665,6 +44658,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- typescript
optional: true
expo-audio@55.0.8(expo-asset@55.0.8(expo@55.0.5)(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)(typescript@5.9.3))(expo@55.0.5)(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0):
dependencies:
@ -44849,6 +44843,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- typescript
optional: true
expo-dev-client@5.0.20(expo@52.0.47):
dependencies:
@ -45042,6 +45037,7 @@ snapshots:
dependencies:
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.4(react@19.2.4))(react-native-webview@13.12.2(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
optional: true
expo-font@13.0.4(expo@52.0.47)(react@18.3.1):
dependencies:
@ -45148,6 +45144,7 @@ snapshots:
fontfaceobserver: 2.3.0
react: 19.2.4
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
optional: true
expo-glass-effect@55.0.8(expo@54.0.25)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.1.0))(react@19.1.0):
dependencies:
@ -45300,6 +45297,7 @@ snapshots:
dependencies:
expo: 55.0.5(@babel/core@7.28.5)(@expo/dom-webview@55.0.3)(@expo/metro-runtime@6.1.2)(expo-router@55.0.5)(react-dom@19.2.4(react@19.2.4))(react-native-webview@13.12.2(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
react: 19.2.4
optional: true
expo-linear-gradient@15.0.7(expo@54.0.12)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0):
dependencies:
@ -45592,6 +45590,7 @@ snapshots:
invariant: 2.2.4
react: 19.2.4
react-native: 0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4)
optional: true
expo-notifications@55.0.12(expo@55.0.5)(react-native@0.83.2(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)(typescript@5.9.3):
dependencies:
@ -45849,7 +45848,7 @@ snapshots:
- supports-color
optional: true
expo-router@55.0.5(x7lnlfjdazvti7gnhecex443py):
expo-router@55.0.5(tkph4mqwn7yyg5tlp6kukooce4):
dependencies:
'@expo/log-box': 55.0.7(@expo/dom-webview@55.0.3)(expo@55.0.5)(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
'@expo/metro-runtime': 6.1.2(expo@55.0.5)(react-dom@19.2.4(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
@ -45887,7 +45886,7 @@ snapshots:
vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
optionalDependencies:
'@react-navigation/drawer': 7.7.4(@react-navigation/native@7.1.33(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native-gesture-handler@2.30.0(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native-reanimated@4.2.2(react-native-worklets@0.7.4(@babel/core@7.28.5)(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native-safe-area-context@5.7.0(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native-screens@4.24.0(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
'@testing-library/react-native': 13.3.3(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react-test-renderer@19.1.0(react@19.2.4))(react@19.2.4)
'@testing-library/react-native': 13.3.3(jest@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12)))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react-test-renderer@19.1.0(react@19.2.4))(react@19.2.4)
react-dom: 19.2.4(react@19.2.4)
react-native-gesture-handler: 2.30.0(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
react-native-reanimated: 4.2.2(react-native-worklets@0.7.4(@babel/core@7.28.5)(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4))(react-native@0.84.1(@babel/core@7.28.5)(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
@ -46818,6 +46817,7 @@ snapshots:
- supports-color
- typescript
- utf-8-validate
optional: true
exponential-backoff@3.1.3: {}
@ -47211,23 +47211,6 @@ snapshots:
forever-agent@0.6.1: {}
fork-ts-checker-webpack-plugin@9.0.2(typescript@5.7.2)(webpack@5.97.1(esbuild@0.19.12)):
dependencies:
'@babel/code-frame': 7.27.1
chalk: 4.1.2
chokidar: 3.6.0
cosmiconfig: 8.3.6(typescript@5.7.2)
deepmerge: 4.3.1
fs-extra: 10.1.0
memfs: 3.5.3
minimatch: 3.1.2
node-abort-controller: 3.1.1
schema-utils: 3.3.0
semver: 7.7.3
tapable: 2.3.0
typescript: 5.7.2
webpack: 5.97.1(esbuild@0.19.12)
fork-ts-checker-webpack-plugin@9.0.2(typescript@5.7.2)(webpack@5.97.1(esbuild@0.27.0)):
dependencies:
'@babel/code-frame': 7.27.1
@ -47979,7 +47962,8 @@ snapshots:
hermes-compiler@0.14.1: {}
hermes-compiler@250829098.0.9: {}
hermes-compiler@250829098.0.9:
optional: true
hermes-estree@0.23.1: {}
@ -48777,25 +48761,6 @@ snapshots:
- supports-color
- ts-node
jest-cli@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
'@jest/test-result': 30.2.0
'@jest/types': 30.2.0
chalk: 4.1.2
exit-x: 0.2.2
import-local: 3.2.0
jest-config: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest-util: 30.2.0
jest-validate: 30.2.0
yargs: 17.7.2
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- esbuild-register
- supports-color
- ts-node
jest-cli@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
@ -48835,6 +48800,26 @@ snapshots:
- ts-node
optional: true
jest-cli@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12)):
dependencies:
'@jest/core': 30.3.0(esbuild-register@3.6.0(esbuild@0.19.12))
'@jest/test-result': 30.3.0
'@jest/types': 30.3.0
chalk: 4.1.2
exit-x: 0.2.2
import-local: 3.2.0
jest-config: 30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))
jest-util: 30.3.0
jest-validate: 30.3.0
yargs: 17.7.2
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- esbuild-register
- supports-color
- ts-node
optional: true
jest-cli@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.3.0(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
@ -48967,40 +48952,6 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-config@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@babel/core': 7.28.5
'@jest/get-type': 30.1.0
'@jest/pattern': 30.0.1
'@jest/test-sequencer': 30.2.0
'@jest/types': 30.2.0
babel-jest: 30.2.0(@babel/core@7.28.5)
chalk: 4.1.2
ci-info: 4.3.1
deepmerge: 4.3.1
glob: 10.5.0
graceful-fs: 4.2.11
jest-circus: 30.2.0
jest-docblock: 30.2.0
jest-environment-node: 30.2.0
jest-regex-util: 30.0.1
jest-resolve: 30.2.0
jest-runner: 30.2.0
jest-util: 30.2.0
jest-validate: 30.2.0
micromatch: 4.0.8
parse-json: 5.2.0
pretty-format: 30.2.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 22.19.1
esbuild-register: 3.6.0(esbuild@0.19.12)
ts-node: 10.9.2(@types/node@22.19.1)(typescript@5.9.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
jest-config@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@babel/core': 7.28.5
@ -49068,6 +49019,39 @@ snapshots:
- supports-color
optional: true
jest-config@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12)):
dependencies:
'@babel/core': 7.28.5
'@jest/get-type': 30.1.0
'@jest/pattern': 30.0.1
'@jest/test-sequencer': 30.3.0
'@jest/types': 30.3.0
babel-jest: 30.3.0(@babel/core@7.28.5)
chalk: 4.1.2
ci-info: 4.3.1
deepmerge: 4.3.1
glob: 10.5.0
graceful-fs: 4.2.11
jest-circus: 30.3.0
jest-docblock: 30.2.0
jest-environment-node: 30.3.0
jest-regex-util: 30.0.1
jest-resolve: 30.3.0
jest-runner: 30.3.0
jest-util: 30.3.0
jest-validate: 30.3.0
parse-json: 5.2.0
pretty-format: 30.3.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 22.19.1
esbuild-register: 3.6.0(esbuild@0.19.12)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
optional: true
jest-config@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0)):
dependencies:
'@babel/core': 7.28.5
@ -49835,19 +49819,6 @@ snapshots:
- supports-color
- ts-node
jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
'@jest/types': 30.2.0
import-local: 3.2.0
jest-cli: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- esbuild-register
- supports-color
- ts-node
jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
@ -49875,6 +49846,20 @@ snapshots:
- ts-node
optional: true
jest@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12)):
dependencies:
'@jest/core': 30.3.0(esbuild-register@3.6.0(esbuild@0.19.12))
'@jest/types': 30.3.0
import-local: 3.2.0
jest-cli: 30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- esbuild-register
- supports-color
- ts-node
optional: true
jest@30.3.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.3.0(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
@ -55006,6 +54991,7 @@ snapshots:
- bufferutil
- supports-color
- utf-8-validate
optional: true
react-refresh@0.14.2: {}
@ -56705,17 +56691,6 @@ snapshots:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.97.1(esbuild@0.19.12)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
serialize-javascript: 6.0.2
terser: 5.44.1
webpack: 5.97.1(esbuild@0.19.12)
optionalDependencies:
esbuild: 0.19.12
terser-webpack-plugin@5.3.14(esbuild@0.27.0)(webpack@5.100.2(esbuild@0.27.0)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
@ -56941,27 +56916,6 @@ snapshots:
ts-interface-checker@0.1.13: {}
ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.19.12)(jest-util@30.3.0)(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(typescript@5.9.3):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
handlebars: 4.7.8
jest: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
semver: 7.7.3
type-fest: 4.41.0
typescript: 5.9.3
yargs-parser: 21.1.1
optionalDependencies:
'@babel/core': 7.28.5
'@jest/transform': 30.3.0
'@jest/types': 30.3.0
babel-jest: 30.3.0(@babel/core@7.28.5)
esbuild: 0.19.12
jest-util: 30.3.0
ts-jest@29.4.5(@babel/core@7.28.5)(@jest/transform@30.3.0)(@jest/types@30.3.0)(babel-jest@30.3.0(@babel/core@7.28.5))(esbuild@0.27.0)(jest-util@30.3.0)(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.27.0))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(typescript@5.9.3):
dependencies:
bs-logger: 0.2.6
@ -58569,36 +58523,6 @@ snapshots:
- esbuild
- uglify-js
webpack@5.97.1(esbuild@0.19.12):
dependencies:
'@types/eslint-scope': 3.7.7
'@types/estree': 1.0.8
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
'@webassemblyjs/wasm-parser': 1.14.1
acorn: 8.15.0
browserslist: 4.28.0
chrome-trace-event: 1.0.4
enhanced-resolve: 5.18.3
es-module-lexer: 1.7.0
eslint-scope: 5.1.1
events: 3.3.0
glob-to-regexp: 0.4.1
graceful-fs: 4.2.11
json-parse-even-better-errors: 2.3.1
loader-runner: 4.3.1
mime-types: 2.1.35
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.3.0
terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.97.1(esbuild@0.19.12))
watchpack: 2.4.4
webpack-sources: 3.3.3
transitivePeerDependencies:
- '@swc/core'
- esbuild
- uglify-js
webpack@5.97.1(esbuild@0.27.0):
dependencies:
'@types/eslint-scope': 3.7.7